scanf wird uebersprungen ?
-
hallo.
uch habe ine verstaendnisfrage. folgender code:
while (1) { cmmdinpt = calloc(129, sizeof(char)); ... scanf(">> %s\n", cmmdinpt); printf("das wars %s\n", cmmdinpt); ... free(cmmdinpt); }
erzeugt nach einer ersten eingabe eine endlose ausgabe von 'das wars' auf der konsole. scanf ist eine blockierende funktion, das heisst, sie wartet bis eine eingabe stattgefunden hat (ich hoffe ich liege richtig). wieso wird die funktion scanf nach dem ersten durchlauf der while-schleife dann aber immer gleich verlassen obwohl keine eingabe stattgefunden hat ?
Danke und Gurss
caspar
-
Hi!
Hast du mal versucht den Puffer zu leeren?
fflush(stdin);
Wenn das nicht hilft, probier mal:int x; if(strlen(eingabeVar)+1 >= max_anz) while((x=getchar())!='\n' && x!='\0'); x=0
In deinem Fall sollte max_anz 129 sein. Ich habe die Schleife mal benutzt da es unter Linux nicht funktionierte mit fflush, allerdings unter Windows. Die Schleife funktioniert unter beiden Systemen. Sie holt alle Zeichen aus dem Puffer einschließlich \n bzw. \0
Code-Hacker