Proggi muss beendet werden ????
-
moin,
ich wollte gerade ein bisschen C übern, und da hab ich mir überlegt, dass ich mal schenll ein Proggi schreiben will, mit dem man addieren, subtrahieren, dividieren und multiplizieren kann.so weit so gut...
jetzt habe ich diesen Code:#include <stdio.h> int auswahl; long zahl1; long zahl2; int main() { anfang:; printf("Was wollen sie machen?\n"); printf("[1] ADD\n[2] SUB\n[3] MUL\n[4] DIV\n"); scanf("%s",&auswahl); printf("%s\n",auswahl); getchar(); if (auswahl==1) { /* Addition */ printf("1.Zahl:"); scanf("%d",&zahl1); printf("2. Zahl"); scanf("2. Zahl",&zahl2); printf("%d",zahl1+zahl2); getchar(); goto anfang; } else { printf("Das gibt es nicht\n\n"); getchar(); goto anfang; } }
Der Komplier zeigt mir keine Fehlermeldung oder Warnung an, und man kann das Programm auch starten, aber sobald man irgentetwas eingibt, und bestätigt, dann kommt die Felermeldung von Windoof:
...hat ein Problem festgestellt und muss beendet werden.
also ich habe keine Ahnung woran das liegt.
Ist wahrscheinlich wieder mal nur ein kleinerer Fehler, aber trotzdem.
bitte helft mir...
-
die Variable auswahl ist vom typ int. Einlesen tust du aber einen String.
Also:scanf("%d", &auswahl);
//Edit: Den Fehler machst du in deinem Code-Schnipsel nicht nur einmal. Du schreibst z.B. schanf("2. Zahl", &zahl2), Das Ergebnis wird auch nicht ausgegeben, da ein '%d' fehlt, etc. Das solltest du unbeding nochmal nachprüfen ;).
Desweiteren ist die Benutzung von goto in deinem Beispiel imho nicht so gelungen...
Caipi
-
Falls du mal vor hast, groessere progs zu schreiben, dann verzichte jetzt gleich mal auf goto:. Das führt zu Spaghettie-Code.
Verwende lieber:
while (1) {...if(...)break;} while (getchar()!='n') {....}
-
ok, danke leutz, es geht jetzt.
hab ich ja gesagt, war nur ein dummer Fehler dass mit dem scanf.
Naja, muss ich in Zukkunft eben besser aufpassen. Aber wie kann es überhaupt kommen, dass dann das Proggi
abstürzt, eigentlich müßte sich doch da mein Compiler beschweren, oder nicht? rolleyes:
-
#pointer# schrieb:
eigentlich müßte sich doch da mein Compiler beschweren, oder nicht? rolleyes:
kommt drauf an. normalerweise ist es für'n 0815-compiler ein string wie jeder andere, aber es gibt tatsächlich auch compiler, die scanf/printf-formatstrings prüfen, ob der zu den variablen passt (typ, anzahl, etc)