C-Programm will nicht funzen!
-
Hallo,
habe jetzt angefangen C zu lernen und wollte mal ein erstes Prog schreiben.
Habe mal einen Rechner gemacht:/*rechner.c */ #include <stdio.h> main() { int x,y; printf("\n\t R E C H E N P R O G R A M M\n"); printf("\nBitte x eingeben : "); scanf("&i",&x); printf("Bitte y eingeben : "); 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); }
Habe dann das Prog MS Visual C++ 2005 Express verwendet.
habe es kompiliert und dann ein debug gemacht.
War alle ok und die Anwendung ist gestartet.
Wenn ich dann jedoch einen Wert eingebe und dann ENTER drücke verschwindet das Fenster plötzlich.
Welche Taste muss ich zum fortsetzen drücken?
Immer wenn man ENTER drückt geht es weg.hier mal das, was MS visual dazu sagt:
"lol.exe": "C:\Dokumente und Einstellungen\Kevin\Eigene Dateien\Visual Studio 2005\Projects\lol\debug\lol.exe" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt. "lol.exe": "C:\WINDOWS\system32\ntdll.dll" geladen, Keine Symbole geladen. "lol.exe": "C:\WINDOWS\system32\kernel32.dll" geladen, Keine Symbole geladen. Das Programm "[3092] lol.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.
THX
-
Hi
erst einmal solltest du dir die scanf und die printf Funktion nochmals genauer angucken.
Außerdem hast du die main Funktion auch falsch. Es heißt "int main" und am Ende deines Programmes sollte ein "return 0" stehen.Dein Programm beendet sich immer, weil es ja alles ausgeführt hat, was es soll. Wenn du dein Programm über die Kommandozeile startest, dann bleibt das Fenster nach dem Programmende offen und du kannst sehen was passiert ist.
Hier noch ein paar gute Links zum Lernen:
http://www.pronix.de/pronix-4.html
http://www.tfh-berlin.de/~kempfer/skript_c/c.html
http://www.c-programme.de/Und ja, verwende bitte beim nächste Mal einen etwas aussagekräftigeren Topic-Namen
-
Also ich hab jetzt mal nen Beispiel genommen:
#include <stdio.h> int main() { int a, b, summe; /* Lies die Zahlen a und b ein */ printf("Geben Sie bitte zwei ganze Zahlen ein:"); scanf("%i %i", &a, &b); /* Berechne die Summe von a und b */ summe = a + b; /* Gebe das Ergebnis auf dem Bildschirm aus */ printf("Summe: %i", summe); return 0; }
Das muss ja funzen.
Aber auch hier wenn ich enter drücke geht das fenster weg ??!!
-
Hallo,
Das Fenster bleibt sichtbar, wenn sich dein Programm nicht beendet.
Ersetze die Zeile return 0; mit while(1) getchar();
-
Hi
Ich hatte es doch schon erklärt...
Dein Programm beendet sich, wenn alle Aufgaben erfüllt sind. Du musst dein Programm über die Kommandozeile starten, damit du siehst, was dein Programm nach deiner letzten Abfrage ausgegeben hat.
Heißt: Du baust eine zusätzliche Abfrage ein, damit sich das Fenster nicht schließt. Das könntest du dann mit "getchar()" machen oder du verwendest "system("pause")"(nicht empholen).Die Funktion scanf solltest du dir aber auch nochmals genauer anschauen. Wenn du die Eingabe bestätigst, bleibt ein '\n' im Eingabepuffer zurück. Dieses '\n' solltest du nach der scanf-Funktion wieder aus dem Puffer hohlen. Unter www.pronix.de sind da einige Beispiele hierfür.
ps. Denk ja nicht dran fflush(stdin) zu benutzten!(Nicht Protabel, Funktioniert nur mit dem MS Compiler richtig)
Noch ein kleiner Tipp: Arbeite nicht nur mit einem Buch, schau dir jedes Thema auch in anderen Büchern an. Vielleicht ist ja in einem anderen Buch etwas genauer/verständlicher erklärt oder in gerade deinem Buch ist viel Misst geschrieben
-
ok danke für eure tips.
Jetzt geht es endlich.
-
@notrix_omgwtfs
Anweisungen wie getchar() oder system("pause"), damit deine Anwendung sich nicht schliesst, brauchst du nicht. Da du sowieso VC++ 2005 EE verwendest, ist die Lösung recht trivial. Starte dein Programm mit Ctrl+F5 (Start Without Debugging), dann hält die IDE das Konsolenfenster nach Beendigung der Anwendung automatisch offen, so dass du dir die Ausgaben anschauen kannst. Eine allgemeinere Lösung ist, explizit ein Konsolenfenster zu öffnen, und dort deine Anwendung zu starten. Eine ausführlichere Erklärung findest du auch hier.