Wem fällt etwas auf?
-
char zeile[80]; scanf("%s",zeile); printf("%s\n",zeile); gets(zeile); puts(zeile); getch(); return 0;
Wieso wartet das Programm nicht bei gets auf die Returnanweisung?
Das Programm springt einfach über die Anweisung drüber, sobald ich nach der printf-Anweisung eine Taste drücke
-
Im Tastaturpuffer ist noch die Returnanweisung vorhanden, diese wird dann von gets() eingelesen, und danach ausgegeben. Du musst vorher den Tastaturpuffer leeren. Z.B. so:
char zeile[80]; scanf("%s",zeile); printf("%s\n",zeile); fflush(stdin); gets(zeile); puts(zeile); getch(); return 0;
-
Aua. Erstens mal sollte man _nie_ gets() verwenden, das Programm wird dadurch mit absoluter Sicherheit fehlerhaft. Zweitens ist fflush(stdin) eine Erweiterung von Microsoft und sollte eigentlich auch nie verwendet werden. Schau in der FAQ nach wie man das sonst machen kann.
-
freaked schrieb:
... fflush(stdin); ...
warum man das nicht schreibt:
http://c-plusplus.net/forum/viewtopic-var-t-is-39349.htmlund wie man das erreicht was man urspruenglich wollte:
http://c-plusplus.net/forum/viewtopic-var-t-is-111042.htmlhatte zwar noch bessere artikel in erinnerung aber die find ich jetzt nicht -koennte auch sein das sie im faq von developia.de stehen oder so.
-
char zeile[80]; scanf("%s",zeile); printf("%s\n",zeile); while(!kbhit()) { getch(); } gets(zeile); puts(zeile); getch(); return 0;
Den Tastaturpuffer wollte ich so leeren, aber es klappt auch nicht.
-
Mit scanf und gets gibt es probleme, ist mir auch oft passiert,
versuche einfach dich auf eins zu einigen entweder scanf oder gets
gruss alex
-
gets() ist wohl mit Abstand die bescheuertste Art einen String einzulesen. Aber ich wiederhole mich