String einlesen
-
Hallo habe folgendes Problem, ich will in ein Struct werten eifügen, und dieses dann in eine binärdatei schreiben.
Annahmen:
for(i=0;i<3;i++) { printf("Satz eingeben: "); fgets(Block.Array, length, stdin); Block.Zufallszahl = timeZufallszahl(); printf("\nZufallszahl gespeichert! Wert: %ld\n",Block.Zufallszahl); printf("Buchstaben eingeben: "); scanf("%c\n",&Block.Buchstabe); ret = fwrite (&Block,sizeof(dataElement),1,datei_ptr); if(ret != 1) { printf("\nFehler!!!!!\n"); system("PAUSE"); } }
Die Eingaben in das struct Block funktionieren einwandfrei, aber die Reihenfolge stimmt nicht. eigentlich erwarte ich das ich den Satz als erstes eingeben muss, aber er schreibt als erstes die Zufallszahl rein, dann den Buchstaben, und dann muss ich einen Satz eingeben, obwohl er ganz oben mit printf() schon danach gefragt hat, und direkt danach fgets kommt. Woran liegt das?
Danke im voraus
zoro :p
-
Meinst du die Reihenfolge in der Datei? Dann schau mal die Definition von Block an.Beim zweiten Durchlauf liest fgets das '\n' (von der Returntaste) ein, mit dem du das einzelne Zeichen eingegeben hast.
Ansonsten sind das etwas wenig angaben.
-
Ersetze "%c\n" durch "\n%c", ansonsten fehlt die Definition von Block, damit man dir was erklären kann.
-
Block war nur ein Array, aber bin auf die Lösung gekommen,
und zwar wenn mann vor fgets ein scanf benutzt, muss man nach dem scanf fflush(stdin) die Eingabe löschen, und schon funktionierts, und das %c\n ist völliger mist, das sollte da nicht hin^^
Danke!
-
fflush(stdin) ist völliger Mist, nur um dich mal wieder zu erden.
-
Das mag sein, aber so hat es funktioniert^^
-
zoro schrieb:
Das mag sein, aber so hat es funktioniert^^
Mag sein, dass es in deiner speziellen Umgebung (System/Compiler) funktioniert.
Der C-Standard deckt das aber nicht ab. Daher ist es Mist.
Man kann es aber richtig machen. Nur muss man dafür das gewünschte Verhalten wissen.