syntax der gets() funktion
-
hallo, ich eine frage zur syntax der gets() funktion. ich möchte einen namen eingeben lassen und den in ein vorhern definiertes feld einlesen
also etwa so:char vor[30]; /*definition des feldes vor*/
printf("Bitte Vornamen eingeben:");und jetzt möchte ich den namen der eingegeben wird mittels der gets() funktion in das feld "vor" einlesen. wie ist da die syntax?
MfGMarco
-
gets(vor);
Dann speichert es den Namen ins vor bis du enter drückst!
-
danke jetzt klappts, hab aber ien neues problem:
printf("Bitte Vornamen eingeben:");
gets(vor);
printf("Bitte Nachname eingeben:");
gets(nach);
printf("Bitte Strasse eingeben:");
gets(str);
printf("Bitte Hausnummer eingeben:");
scanf("%i",hausnr);das erste was er ausgibt wenn ich das programm starte ist:
Bitte Vornamen eingeben:Bitte Nachnamen eingeben:
macht also die beiden printfbefehle gleichzeitig. wieso? denn danach macht er normal weiter, fragt also strasse und hausnummer ganz normal ab..MfG
-
post mal den kompletten code!
-
printf("Bitte Vornamen eingeben:"); gets(vor); printf("Bitte Nachname eingeben:"); gets(nach); printf("Bitte Strasse eingeben:"); gets(str); printf("Bitte Hausnummer eingeben:"); scanf("%i",hausnr);
Hier würde zuerst "Bitte Vorname..." ausgegeben, danach wird gets aufgerufen.
Das Problem liegt an dem zweiten gets(), da sich das \n von der vorherigen Eingabe noch im stdin Buffer befindet, denkt gets, du hättest Enter betätigt. Das sollte man also immer irgendwie herausfiltern(zB. durch eine kleine Funktion, die nach einem '\n' sucht und diese Stelle dann durch ein '\0' ersetzt...)Beachte aber, dass gets sehr gefährlich ist, da hier nicht die Maximal mögliche Länge des char Arrays geachtet wird. Google: BufferOverflow
char *fgets(char *s, int size, FILE *stream);
Spass muss sein.....
-
@anonymous: "man 3 gets" sagt da etwas anderes aus: gets() liest solange bis \n oder EOF, setzt in beiden Fällen statt diesen "Zeichen" \0 ein.
Also bei mir funzt das mit dem gets()-Aufrufen, du musst wirklich mal den ganzen Code posten, um da was beurteilen zu können.
Aber: wie anonymous schon sagte: fgets benutzen!