Daten aus File auslesen
-
Hallo!
Ich würde gerne aus der 5. Zeile eines Files eine bestimmte Zahl auslesen. Ich habe dazu fread verwendet. Das funktioniert auch gut, solange ich das Auslesen des Files in main() mache. Sobald ich aber den Code als eigene Funktion schreibe und diese dann in main() aufrufe, bekomme ich eine segmentation violation.
Kann mir von euch vielleicht irgendwer helfen?Danke,
MatthiasMein Code:
int test() { int i=1; grid test_grid; myint num_nodes=0; myint num_char=0; myint strlen=0; char* buffer; FILE* file=fopen("test.msh","r"); while(i<5) { fread(buffer,1,1,file); num_char++; while(buffer[0] != '\n') { num_char++; fread(buffer,1,1,file); } i++; } fread(buffer,1,1,file); while(buffer[0] != '\n') { strlen++; fread(buffer,1,1,file); } rewind(file); fread(buffer,num_char,1,file); fscanf(file,"%d",&num_nodes); fclose(file); return(num_nodes); } int main() { printf("%d\n", test()); return 0; }
-
Editiere deinen Beitrag und formatiere den Code, welchen du in [cpp]-Tags packst. So will man den Code nicht lesen.
-
Danke für den Hinweis, hab's jetzt geändert.
-
buffer zeigt ins nirvana, der muss erstmal auf was zeigen, bevor du den fread übergibst
-
ich bin mir nicht sicher, ob das reicht, aber ich habe die 8. ziele nun abgändert, nämlich
char* buffer="0";
Dann müsste buffer ja nicht mehr irgendwohin zeigen, oder?
Ich bekomme aber immer noch eine segmentation violation.
-
ne dann zeigt er ja auf eine konstante zeichenkette, des geht nid. schau mal nach malloc oder wenn du eh von anfang an weisst, wieviele bytes du auslesen musst, dann leg doch gleich einen entsprechenden buffer an. aber wenn du zeilenweise auslesen willst, kannste auch fgets benutzen
-
Danke, funktioniert jetzt super!
Matthias