Einlesen von Strings!!!!!!!!
-
@net: ja, würg *fg*. BTW warst es nicht du, der mich (damals noch als unreg) davon abgebracht hat
Greetz, Swordfish
-
Anzi-C schrieb:
"sz"
Wer Ordnung hält, ist nur zu faul zum szuchen.
-
Hab beides ausprobiert! Wenn ich statt w wb eintippe ändert sich gar nichts und
wenn ich sizeof(struct Telefon) eingebe kommt eine Fehlermeldung!Leider!!!
-
Und dann würde ja nicht der Namen richtig gespeichert werden, oder?
-
Swordfish schrieb:
@net: ja, würg *fg*. BTW warst es nicht du, der mich (damals noch als unreg) davon abgebracht hat
ich glaub' nicht. ich lästere ja nur über sowas ohne begründungen zu liefern...
-
*gg* Naja während ihr über die ungarische Notation (die polnische ist etwas anderes
) schimpft habe ich mal sein Programm korrigiert.
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Person { char Namen[30]; int Alter; } Telefon; int main(void) { char Pruef; char Dateinamen[30] = ""; int c; FILE *p_file = NULL; printf("Geben Sie bitte den Dateinamen ein: \n "); fgets(Dateinamen, 30, stdin); if(Dateinamen[strlen(Dateinamen)-1] == '\n') // fgets() hinterlässt ein LF ('\n') das gelöscht werden muss Dateinamen[strlen(Dateinamen)-1] = '\0'; p_file = fopen(Dateinamen, "wb"); if(p_file == NULL) { printf("Kein Laden der Datei möglich!\n"); exit(1); } do { printf("\n Namen: "); fgets(Telefon.Namen, 30, stdin); printf("\n Alter: "); scanf("%d", &Telefon.Alter); while((c=getchar()) != EOF && c != '\n'); // Komm ja nicht auf die Idee ffluh(stdin); zu verwenden ;-) fwrite(&Telefon, sizeof(struct Person), 1, p_file); printf("Wollen Sie noch Dateien Speichern? [j]/[n]\n"); scanf("%c",&Pruef); while((c=getchar()) != EOF && c != '\n'); } while((Pruef=='j') || (Pruef=='J')); fclose(p_file); return 0; }
So sollte es funktionieren.
-
Hab es gleich "reinkopiert" aber leider wir die Zahl wieder falsch
abgespeichert!Aber trotzdem vielen Dank!!!!
-
Was verstehst du unter falsch abgespeichert? Ich habes eigentlich extra getestet und es sollte funktionieren. Ich vermute, du öffnest die Datei im Text-Editor?
-
Ja genau ich öffne sie im Text-Editor!
Was ist daran falsch?
-
die daten werden binär gespeichert.
mitm normalen editor ist angucken also nicht. musst die datei auch wieder im
binär mode öffnen/angucken dann ist auch das ergebnis richtg...
-
Du schreibst die Datei binär, dir jetzt genau zu erklären wie z.B. floats oder ints gespeichert werden, sprengt den Rahmen. Google mal danach oder schau dir den Wikipedia-Artikel an: http://de.wikipedia.org/wiki/Binärdatei
Wenn du deine Daten nachher noch mit dem Text-Editor lesen willst, musst du sie folgendermaßen schreiben:
p_file = fopen(Dateinamen, "w"); if(Telefon.Namen[strlen(Telefon.Namen)-1] == '\n') // fgets() hinterlässt ein LF ('\n') das gelöscht werden muss Telefon.Namen[strlen(Telefon.Namen)-1] = '\0'; [..] // statt fwrite(): fprintf(p_file, "%s %d\n", Telefon.Namen, Telefon.Alter);
-
Ok, vielen Dank nochmals!!!!!!!!!
Danke!
lg
Mini
-
@net: stimmt, war groovemaster. Aber du hast auch deinen Senf dazugegeben.
Greetz, Swordfish