fgets in einer Schleife
-
Wenn ich folgendes Skript schreibe, stürzt es mit "General Protection Fault!" ab!
FILE* scanfile; char *scaninfile; char* internlesen; int eof; scanfile=fopen(file3,"r");
Die Datei wird richtig geöffnet!
while(0 == eof){ fgets(scaninfile, (1024*1024*1024), scanfile); strcat(internlesen, scaninfile); if(feof(scanfile)){ eof=1; } }
Wenn man fgets wegnimmt...
while(0 == eof){ //fgets(scaninfile, (1024*1024*1024), scanfile); strcat(internlesen, scaninfile); if(feof(scanfile)){ eof=1; } }
...stürzt es nicht mehr ab (allerdings wird die Datei nicht ausgelesen!)
Bitte korrigierte Version, wenn möglich!!!
PS:
Wenn noch mehr Infos gebraucht werden, bitte schreiben!
-
scaninfile und internlesen sind Zeiger, die, wenn das der vollständige Code ist, ins Nirvana zeigen. Deshalb stürzt das Programm ab, denn Du versuchst Daten in einen Speicherbereich zu schreiben, der Dir nicht gehört. Lösung -> Speicher reservieren und dann darein schreiben (char buffer[1024]; oder sowas)
-
ode rdu löst es auf die elegante art und weise, so bist du flexible
char *pcFileData; int iTotalLen = 1024; pcFileData = (char *)malloc(sizeof(char) * iTotalLen);
Hier kannst du jederzeit die größe des input char verändern
und du hast einen char*vergiss aber nicht am ende, sonst kannst du dir schnell ein memoryleak einfangen.
free(pcFileData);
-
Danke