PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : versteckte, gespeicherte Zeichen



19-08-2000, 14:11
hi nochmal.

kann es sein, dass wenn ich einen Integer mit

scanf("%i", &option);

einlese, und dann, bei der Ausführung, den Integer eingebe und mit Return bestätige, dass das Returnzeichen "irgendwo gespeichert wird"? Denn wenn ich das nächste mal einen string einlesen will

fgets(string, 20, stdin) /* nur als beispiel */

wartet das programm nicht, bis ich was eingebe, sondern scheint das Return einzufügen ... ich hab's dann einfach abgefangen:

scanf("%i", &option);
fgets(puffer, 1, stdin); /* das Returnzeichen abfangen */
strcpy(puffer, "")´; /* das Zeichen wieder löschen*/
strings_einlesen();

hab ich das problem richtig erkannt, oder wie seh' ich die sache? http://www.linuxforen.de/ubb/confused.gif

19-08-2000, 20:28
du hast das schon recht richtig erkannt. das newline zeichen steht natuerlich noch im eingabe puffer, da wenn du ein scanf("%i", &var) machst ja nur das erste zeichen, das eingegeben in var gespeichert wird. Mehr kann die Variable nicht aufnehemen. Wenn du nun wieder ein Zeichen mit scanf einlesen willst wird natuerlich das noch im eingabepuffer befindliche newline zeichen eingelesen und in var gespeichert. Man sollte zum einlesen einzelner integers aber nicht scanf benutzen sondern getc oder aehnliches

cu spectrum

f0rtex
20-08-2000, 19:08
Mit
fflush(stdin);
kannst du den Eingabepuffer löschen.

greets
f0rtex