PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fgets wird nicht ausgeführt



Puh-Bert
12-05-2002, 22:36
Hi

Ich hab da ein kleines Problem. Der Code sieht so aus:

struct dsatz *neu;
if ( ( neu = (struct dsatz*) malloc (sizeof (struct dsatz) ) ) == NULL)
exit (1);
puts ("Name:");
fgets ( neu->name , 19 , stdin );
puts ("Adresse:");
fgets ( neu->adresse , 19 , stdin );

Die Struktur dsatz besteht aus name[20] adresse [20] und dem Zeiger
struct dsatz *next.

Das Problem ist, dass beim Ausführen des Codes das erste fgets nicht ausgeführt wird,
die beiden puts und das zweite fgets allerdings schon. Ich habs mal durch den Debugger geschickt, das hat mich aber auch nicht weitergebracht. Was ich auch schon versucht hab, ist mit fflush ( stdin ) die Standardeingabe vorher zu leeren. Hat nix genützt.

Wer hat eine Idee?

Puh-Bert

anda_skoa
13-05-2002, 08:19
Hmm, probier mal, den Zeiger auf das erste Element des Arrays zu übergeben:



fgets ( neu->name[0] , 19 , stdin );


Erklärt zwar nicht, warum es bei dem anderen fgets geht, aber probieren schadet nix :)

Ciao,
_

Christoph
13-05-2002, 13:07
Problem ist vermutlich die IO-Pufferung.

Versuch mal setlinebuf().

Puh-Bert
13-05-2002, 23:34
Hi

Das Problem war, dass noch ein Newline-Zeichen in Stdin war. Eigentlich hatte ich gedacht, dass man das mit fflush ( stdin ) verhindern könnte - bin ich da auf dem Holzweg?
Was macht setlinebuf ()??

Gruss + Danke

Puh-Bert

Vir@s
14-05-2002, 07:17
Versuch mal

flushall();

damit sollts gehen - funktioniert zumindest bei mir immer :)