Das Problem mit dem standardeingabepuffer...
-
Hallo!
Ich habe folgendes Problem:
Ich möchte zuerst mehrere Strings und dann einen Integerwert aus der Standardeingabe auslesen.
Das Einlesen des Integerwertes klappt natürlich nicht, weil die Standardeingabe nicht leer ist.Ich schreibe nächste Woche eine Prüfung, die von einem Testprogramm vorkorrigiert wird. Wir programmieren auf linux-Maschinen. Wenn ich z.B. mit scanf die standardeingabe "leere", erzeugt das anscheinen einen Zeilenumbruch, der in der Referenzdatei nicht vorkommt. Daher wird das Programm als fehlerhaft betrachtet.
Hättet ihr eine Lösung für mein Problem?
Vielen Dank für eure Hilfe!
struct Adresse{ char nachname[50]; char strasse[50]; int plz; struct Adresse *next; }; void einlesen(struct Adresse **anf, struct Adresse **ende) { struct Adresse *neueAdresse = malloc(sizeof(struct Adresse)); int i; printf("Bitte Namen eingeben: "); scanf(" %s", neueAdresse->nachname); printf("Bitte Strasse eingeben: "); scanf(" %s", neueAdresse->strasse); printf("Bitte Postleitzahl eingeben: "); scanf("%i", neueAdresse->plz); }
-
Es liegt wohl eher am fehlenden & bei dem scanf fürs int.
-
Warum ließt Du die Strings nicht mit fgets ein?
Soviel ich weiß hat scanf keinen Schutz vor einem Pufferüberlauf
-
Doch, hat es. %50s müsste glaube ich gehen oder %.50s wobei ich mich jetzt nie wirklich mit scanf beschäftigt habe.
-
%50s is richtig
-
gosha16 schrieb:
%50s is richtig
der Punkt geht bei Zahlen