ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
441
441
EMPFEHLEN
-
Hallo,
kann mir jemand erklären warum er die Datei nicht im Array data speichert ?:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
char word[20],data2[20], data[20], temp[80]; int len=0, lenwhil=0, zahl=0, var; bool equal; readstring(void) { printf("Wort eingeben: "); scanf("%s", &word); } readfile(void) { FILE *file=fopen("C:/Users/Henri/Desktop/words.txt", "r"); while(feof(file)==0) { fgets(data2, 20, file); printf("%s", data2); data[20]=data[20]; var++; } printf("%s", data); fclose(file); }
Header usw. hab ich eingebunden
Vielen Dank Schonmal
-
Hi und Willkommen bei tutorials.de

Das die Header drin sind, ist klar. Sonst kannst du das Programm gar nicht kompilieren/starten.
Aber im Code sind einige Probleme/Fehler:
Funktionen sollten/müssen Returntypen haben.
Wenn man nichts returnen will, dann "void".
Beim scanf in readstring gehört das & weg! Array!
Beim gleichen scanf: Eingaben mit Leerzeichen werden so nicht genommen.
Nimm fgets.
Im readfile steht ein "data[20]=data[20]"
Wozu ist das gut?
Du weist einer Variable ihren eigenen Wert wieder zu?
Die Zeile könntest du genau so gut weglassen.
Außerdem gehen die Indizes von data[20] nur von 0 bis 19.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19.
Sind genau 20 Stück.
data[20] ist also etwas, das gar nicht mehr zu data gehört.
Irgendeine andere Variable etc., die im Speicher danach kommt.
Nach der while-Schleife gibst du data aus,
obwohl im ganzen readfile nichts darin gespeichert wurde.
Auf globale Variablen sollte man verzichten.
Es gibt doch Funktionsparameter.
Zu diener Frage: Warum sollte die komplette Datei in data gespeichert werden?
Steht doch nicht im Code.
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Danke dafür, aber ich möchte doch nichts returnen deswegen ist es void.
Ich habe gerade gedacht das müsste man machen.
Ja das weis ich.
Es sollte eigentlich heißen "data[20]=data2[20]" ,das war ein versehen.
Weil dann müsste er es doch zuweisen oder nicht, weil wenn ich es ändere gibt er es weiter unten in printf trotzdem nicht aus?!
Das weiß ich auch.
Erklärt sich durch weiter oben.
Warum dass ?
Erklärt sich auch durch weiter oben, bzw. ich möchte aber die ganze Datei in das Array speichern, habs aber probe weise mit nur der ersten Zeile probiert, was aber auch nicht geklappt hat
Wenn ich aber schreibe:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
char word[20],data2[20], data[20][6], temp[80]; int len=0, lenwhil=0, zahl=0, var; bool equal; readstring(void) { printf("Wort eingeben: "); scanf("%s", word); } readfile(void) { FILE *file=fopen("C:/Users/Henri/Desktop/words.txt", "r"); while(feof(file)==0) { fgets(data2, 20, file); printf("%s", data2); data=data2; printf("%s", data[20][var]); var++; } fclose(file); }
kommt aber der Compilerfehler : "incompatible types when assigning to type 'char[20][6]' from type 'char"
Was bedeutet das ?
-
Returntypen: Du hast aber eben kein void, du hast da gar nichts.
Müsste so ausschauen:
Bei der anderen Funktion genauso.Code cpp:1
void readfile(void)
& beim scanf: Nur bei Einzelvariablen (bei denen Pflicht).
Arrays sind aber schon von Anfang an Pointer.
scanf kommt nicht mit Leerzeichen klar:
Wenn du das weißt und das absichtlich so machst, gut.
0-19: wenn dir das klar ist, warum greifst du dann trotzdem
auf [20] zu? bei [19] ist Schluss!
Und auch wenn da [19] stehen würde (und data2) kopierst du nur einen Byte der 20. Um alles zu kopieren: Entweder eine Schleife bis '\0' oder einfach
Code cpp:1
strcpy(data, data2);
Dazu, dass am Schluss die komplette Datei in data sein soll:
In der Schleife speicherst du jede Zeile in data2 und löscht damit den alten Inhalt. Wenn du data2 auch noch in data kopierst wirst du am Schluss nur die letzte Zeile haben.
Zu den globalen Variablen vs. Parameter:
Glob. Variablen sind einfach schlechter Stil. Sie funktionieren, aber...
man sollte Code möglichst so schreiben, dass man Teile davon in anderen Programmen weiterverwenden kann, ohne alles von vorne machen zu müssen. Indem sich Funktionen auf glob. Var. verlassen erreichst du genau das Gegenteil und machst dir so selbst mehr Arbeit.
Zum neuen Code: Warum ist data auf einmal [20][6]?Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
Ähnliche Themen
-
Lesen ein txt datei zu Array
Von koddy013 im Forum JavaAntworten: 10Letzter Beitrag: 07.05.10, 17:26 -
Aus einer txt Datei double Zahlen lesen und in einen Array schreiben
Von loldonkaments im Forum C/C++Antworten: 1Letzter Beitrag: 03.08.07, 15:24 -
xml datei in array lesen
Von djnelly im Forum PHPAntworten: 2Letzter Beitrag: 23.08.06, 11:26 -
Text aus Datei lesen in ein Array und ausgeben
Von JFranz im Forum PHPAntworten: 1Letzter Beitrag: 19.10.04, 17:23 -
datei lesen ok - datei lesen = permission denied
Von dune911 im Forum PHPAntworten: 7Letzter Beitrag: 11.05.02, 15:40





Zitieren


Login






