myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Ungelesen 08.06.10, 23:00   #1
GayFish
Newbie
 
Benutzerbild von GayFish
 
Registriert seit: Dec 2009
Beiträge: 67
Bedankt: 16
GayFish ist noch neu hier! | 0 Respekt Punkte
Standard C Problem mit taschenrechner

Hallo lernen gerade C hab mir auch ein Buch gekauft "C Programmieren von Anfang an" von Helmut Erlenkötter bin noch ziemlich am Anfang, jedenfalls habe ich mich schon gewunden das die Programme wo man da abschreiben soll um zu lernen alle nicht funktionieren können, da am Schluss des Quelltextes getchar (); und return 0; fehlen. Wobei ich auch noch ein ziemlicher Anfänger bin und das nur aus einem anderen Tutorial weiß.
Naja auf jeden Fall habe ich fröhlich weiter gelernt, doch dann kam ein sehr vereinfachter Taschenrechner und das getchar (); und return 0; haben nix geholfen und das Programm hat sich nach dem eingeben der zahlen einfach geschlossen ohne mir das Ergebnis zu sagen habe dann system("PAUSE"); eingefügt dann wurden zwar die Ergebnisse angezeigt aber ich wunder mich trotzdem immer noch warum das nicht direkt geklappt hat und warum in dem Buch getchar (); und return 0; nicht erwähnt werden da ich mir sicher bin dass es einen Grund haben muss dass in dem Buch getchar (); & return 0; nicht direkt am Anfang erwähnt werden.
Hier der Quelltext:

/* bsp10005 */
#include <stdio.h>

main() {
int x,y;
printf("\n\t1 . R e c h e n p r o g r a m m\n");
printf("\nBitte x eingben :");
scanf("%i",&x);
printf("Bitte y eingben :");
scanf("%i",&y);
printf("\n %i + %i ist %i",x,y,x+y);
printf("\n %i - %i ist %i",x,y,x-y);
printf("\n %i * %i ist %i",x,y,x*y);
printf("\n %i / %i ist %i",x,y,x/y);
printf("\n %i %% %i ist %i",x,y,x%y);
system("PAUSE");
getchar ();
return 0;
}

Wie gesagt im Buch steht das alles nur ohne
system("PAUSE") getchar (); return 0;
hoffe hier kann mir das einer erklären


MFG GayFish
GayFish ist offline   Mit Zitat antworten
Ungelesen 08.06.10, 23:03   #2
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Ich hab C unter Linux gelernt deshalb bin ich mir nicht ganz sicher, aber ich meine du müsstest noch
#include <conio.h> einbinden (vorrausgesetzt du verwendest Windows)

EDIT: Hab den Code gerade mal bei mir compiliert, und er funktioniert.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 08.06.10, 23:13   #3
whandall
Anfänger
 
Registriert seit: Feb 2010
Beiträge: 2
Bedankt: 3
whandall ist noch neu hier! | 0 Respekt Punkte
Standard

Das aus dem C-Code erzeugte Programm ist ein Konsolenprogramm, funktioniert also nur 'richtig' (und dann auch ohne PAUSE und getchar) wenn es von einer Kommandozeile aus aufgerufen wird
(diese kann man mit ausführen -> cmd starten).
Wenn man ein solches Programm unter Windows doppelklickt, wird eine temporäre Konsole geöffnet, dann das Programm ausgeführt und nach Beendigung des Programms die Konsole wieder geschlossen.
Deswegen konntest du die Ausgabe des Programms anfänglich nicht sehen, weil sich das Fenster nach der Ausgabe sofort wieder schloss.
whandall ist offline   Mit Zitat antworten
Ungelesen 08.06.10, 23:16   #4
GayFish
Newbie
 
Benutzerbild von GayFish
 
Registriert seit: Dec 2009
Beiträge: 67
Bedankt: 16
GayFish ist noch neu hier! | 0 Respekt Punkte
Standard

oke also das heißt ich bin mit meinem
system("PAUSE");
getchar ();
return 0;
eigentlich genauso richtig ich will das nur wissen das ich da nicht von Anfang an was falsch mache
GayFish ist offline   Mit Zitat antworten
Ungelesen 08.06.10, 23:20   #5
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Nein die brauchst du auf jedenfall.
Musst ja einen Wert, in diesem Fall 0 an das system zurück geben.

Btw. Uns wurde das Selbe Buch im Studium empfohlen, ich fand das damals schon nicht besonderst hilfreich und habs mir deshalb hiermit [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] beigebracht.

Außerdem kann ich dir nur empfehlen möglichst viel Code zu schreiben, zu testen und damit zu experimentieren und dich nicht so sehr an Übungen lang hangeln.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 08.06.10, 23:22   #6
GayFish
Newbie
 
Benutzerbild von GayFish
 
Registriert seit: Dec 2009
Beiträge: 67
Bedankt: 16
GayFish ist noch neu hier! | 0 Respekt Punkte
Standard

alles klar vielen dank
mfg GayFish
GayFish ist offline   Mit Zitat antworten
Ungelesen 08.06.10, 23:33   #7
gosha16
Banned
 
Registriert seit: Sep 2009
Ort: /root/
Beiträge: 825
Bedankt: 640
gosha16 ist noch neu hier! | 0 Respekt Punkte
Standard

das das Programm das "getchar()" scheinbar nicht beachtet liegt daran das nach dem zweiten scanf() noch ein zeichen im Eingabepuffer (stdin) liegt (meistens ein Return [\n]). Dieses bleibt solang dort bis eine Funktion aufgerufen wird die von stdin ließt. getchar() ist so eine Funktion.

Du solltest generell nach jedem scanf() folgenden Code einfügen:
Code:
while ((c = getchar()) != EOF && c != '\n');
die variable c kannst du als int deklarieren.
Dieses Problem wird dir evtl später im Buch nochmal begegnen.
gosha16 ist offline   Mit Zitat antworten
Ungelesen 27.08.17, 10:35   #8
User=0
Anfänger
 
Registriert seit: Aug 2017
Beiträge: 1
Bedankt: 0
User=0 ist noch neu hier! | 3 Respekt Punkte
Standard

Hallo,
mein Name ist Heiko und ich versuche, als absoluter Neuling, auch gerade C mit dem Buch" C Programmieren von Anfang an"von Helmut Erlenkötter, zu lernen. Jetzt habe ich auch Probleme mit dem genannten Beispiel zum abtippen
Ich nutze Eclips Oxygen cdt
Wenn ich Run drücke passiert gar nichts in der Konsole, wenn ich dann aber dort einfach Zahlen eintippe und jeweils mit Enter bestättige kommt der gewünschte Text des Programms mit dem richtigen Ergebnis
Warum werden die ersten printf Zeilen vor dem scanf nicht ausgegeben?
Würde gern einen Bildschirmschnappschuss hier einfügen, geht aber anscheinend nicht...

Gruß Heiko
User=0 ist offline   Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.


Sitemap

().