Noobfrage endlosschleife :-(
-
Hallo leute hab n kleines Problem folgender code erzeugt eine endlosschleife bei falscheingabe kann mir einer sagen woran das liegt und wie ich das behebe...
Bei Falscheingabe soll solange wieder gefragt werden bis die eingabe stimmt.
int main (void){ int zahl; do{ rewind(stdin); printf("Bitte geben Sie eine Zahl ein:"); }while(!scanf("%i",&zahl)); printf("%i\n",zahl); return 0; }
so wie ich das verstanden habe befreit rewind die stdeingabe vom letzten zeichen warum erzeug ich dann eine endlosschleife bei eingabe eines buchstabens?
Danke für jede hilfe
Greetz Bubschie
-
Du gibst keinen Buchstaben 'x' ein sondern einen String "x" ein.
dies entspricht:
char string[] = { 'x', 0 };
-
Wus wullst du lusun? Zuhl udur Tuxt? Duun Furmutstrung kunn uch nucht. Muunst du "%d"?
-
nur u schrieb:
Wus wullst du lusun? Zuhl udur Tuxt? Duun Furmutstrung kunn uch nucht. Muunst du "%d"?
--> Sehr hilfreich!
-
vurstuhst du much nucht?
-
uch vurstuhu
ich meine %d das is aber nicht das problem und @ glock nur u war auf jeden fall ne größere hilfe als du was soll das kluggescheisse, war doch nicht so schwer zu verstehen meine Frage oder ??
Thx anyway werd wohl nicht drumherum kommen atoi zu nutzen ...
Bubschie
-
nur u schrieb:
Wus wullst du lusun? Zuhl udur Tuxt? Duun Furmutstrung kunn uch nucht. Muunst du "%d"?
Ich vermute man versteht den Text nur, wenn man schon mit dem Programmieren weiter ist
Ich übersetze es mal für die Allgemeinheit: "Was willst du lesen? Zahl oder Text? Deinen Formatierstring kenne ich nicht. Meinst du '%d'?"
-
ja ich meine %d das löst aber mein problem nicht.
ich will eine Zahl einlesen und will wenn etwas anderes als eine Zahl eingegeben wird das die schleife printf("Bitte geben Sie eine Zahl ein:"); wieder ausgibt und auf eine neue eingabe gewartet wird.
mein programm funzt wenn man eine Zahl eingibt aber wenn mann etwas anderes eingibt springt er andauernt in die schleife ohne zu warten und gibt endloss printf("Bitte geben Sie eine Zahl ein:"); aus. Ich dachte das rewind die stdin wieder aufraumt und scanf somit wieder wartet das etwas neues eingegeben wird ist aber leider nicht so.
ich denke man kann das mit scanf("%s",&zahl) und atoi(zahl) lösen ist aber nicht sehr schoen ...int main (void){ int zahl; do{ rewind(stdin); printf("Bitte geben Sie eine Zahl ein:"); }while(!scanf("%d",&zahl)); printf("%d\n",zahl); return 0; }
MfG Bubschie
-
scheint mit dem rewind nicht zu klappen, versuch: while((c=fgetc(stdin)!=EOF)&&(c!='\n'));