cmd.exe problem
-
guten abend.
ich habe vor ein paar tagen mit dem programmieren von c begonnen.
habe sonst keinerlei kenntnisse. nun habe ich ein problem beim
aussführen eines programms. ich programmiere nach diesem tutorial:
Galileocomputingerst hatte ich das problem beim hello world programm, das sich
das fenster nach wenigen millisekunden geschlossen hat. nach einer stunde
googlen habe ich herausbekommen das ich statt return 0 getchar()
verwenden kann da es auf einen knopfdruck wartet.
jetzt bin ich in einem abschnitt wo ich eine eingegebene
zahl wiedergeben muss.#include <stdio.h> int main (void) { int x; //variable soll eingegebene zahl übernehmen printf("Bitte geben Sie eine Zahl ein : "); scanf("%d",&x); // Wartet auf die Eingabe. printf("Die Zahl, die Sie eingegeben haben, war %d\n",x); return 0; }
wenn ich nun die zahl eingebe und ENTER drücke schließt sich das fenster,
anstatt meinen wert auszugeben. was kann ich tun? benutze vista 32.
meine umgebung ist dev c++ und mein compiler ebenfalls.
hoffe das mir jemand helfen kann!
mfg tems
-
kannst du auch getchar vor return machen.
wenn du dein programm über die eingabeaufforderung starten würdest, bräuchtest du kein getchar machen.
-
das mit dem getchar vor return hilft auch nicht!
und laut google ist cmd die eingabeaufforderung.
oder gibt es noch was anderes?mfg tems
-
tems schrieb:
das mit dem getchar vor return hilft auch nicht!
und laut google ist cmd die eingabeaufforderung.
oder gibt es noch was anderes?auchso meint, dass du die cmd starten sollst und darin dein Programm dann aufrufst. Das ist nämlich bei Konsolenprogrammen die übliche Art und Weise, sie von der Konsole zu starten
.
Ansonsten schau mal hier Punkt 2:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-151578.htmlDas ist zwar die FAQ für C++, aber vieles gilt auch für C.
-
Wenn du das mit getchar() machen willst, musst du vorher den Eingabepuffer leeren. Das geht unter Windows zwar meistens auch mit fflush(stdin), ist aber nicht portabel und nicht im Standard definiert. Ich würde es so machen:
#include <stdio.h> void erase_buffer(void) { int c; // int c, nicht char c. while ((c = getchar()) != EOF && c != '\n'); // kein {} block, stimmt so } int main (void) { int x; //variable soll eingegebene zahl übernehmen printf("Bitte geben Sie eine Zahl ein : "); scanf("%d",&x); // Wartet auf die Eingabe. printf("Die Zahl, die Sie eingegeben haben, war %d\n",x); erase_buffer(); getchar(); return 0; }
EDIT: so ist es noch ein bisschen eleganter:
#include <stdio.h> void wait_for_key(void) { int c; // int c, nicht char c. while ((c = getchar()) != EOF && c != '\n'); // kein {} block, stimmt so getchar(); } int main (void) { int x; //variable soll eingegebene zahl übernehmen printf("Bitte geben Sie eine Zahl ein : "); scanf("%d",&x); // Wartet auf die Eingabe. printf("Die Zahl, die Sie eingegeben haben, war %d\n",x); wait_for_key(); return 0; }
-
vielen dank, das mit dem direkt starten hat geklappt
das faq bereitet mir kopfschmerzen, aber ich brauche es ja noch nicht.
danke danke danke mfg tems