Problem mit gets()!
-
Ich habe ein Problem mit Der gets() funktion sie wird einfach uebersprungen
fals ich kein scanf() davor schreibe! WIESO???
Hier ein beispiel:#include<stdio.h> #include<stdlib.h> void funk(int num); void main() { int num; printf("Unesite broj stringova:"); scanf("%d",&num); funk(num); } void funk(int num) { char *string; int i=0; while(i<num) { string=malloc(num); if(string==NULL) { printf("Nema dovoljno memorije\n"); exit(1); } printf("\nUnesi string:\n"); scanf("%d");/*Ohne diese Zeile klapt es nicht obwohl Sie nutzlos ist???*/ gets(string); puts(string); i++; } }
-
Hallo,
das Problem kommt daher: Nach der ersten scanf Eingabe (in main) liegt noch ein '\n' im stdin (also dem Eingabestream), das wird dann per gets eingelesen und deshalb hast du das Gefühl, die Eingabe wird "übersprungen".
Wie kann man das beheben?:
void clearStdin() { int c; while ((c=getchar()) != EOF && c != '\n'); };
Einfach nach einem scanf aufrufen
MfG
GPC