Hallo,
ich würde gerne eine Datei komplett einlesen! Das ein Segmentation Fault enthalten ist, ist mir bekannt ist nur ein Beispiel Code. Ich will eine HTML-Datei parsen, derzeit lese ich die Daten Zeilenweise und parse sie sofort Zeile für Zeile. Aus Performance gründen, möchte ich nun allerdings den kompletten Dateiinhalt in ein Array schreiben und dieses Array dann durch parsen. Hab mir jetzt mal gedanken gemacht wie so ein komplett einlesen aussehen könnte. Ich kann mir allerdings nicht vorstellen, das es da keine Funktion gibt die das kann?!
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fd;
char buffer[1024];
char *daten;
char *ret_code;
if(argc != 2)
printf("Usage: %s textfile\n",argv[0]);
else if(argc == 2) {
fd = fopen(argv[1], "r");
if(fd) {
daten = (char *)malloc(sizeof(buffer)+1);
memset(daten, 0, sizeof(daten));
do {
ret_code = fgets(buffer, 1024, fd);
if(ret_code) {
strcat(daten, buffer);
daten = (char *)realloc(daten, strlen(daten) + strlen(buffer));
}
}while(ret_code);
fclose(fd);
printf("<--> Daten:\n %s\n", daten);
} else
printf("<--> Error: %s konnte nicht geöffnet werden!\n", argv[1]);
}
return 0;
}
Meine Frage ist nun ob es nicht einfacher geht eine ganze Datei komplett einzulesen, wie in Perl zum Beispiel?
PseudoCode - Perl
Code:
<FILE>=fopen("text.txt","r");
@daten = <FILE>;
fclose(FILE);
Wäre super wenn mir da jemand helfen könnte!
MfG tanis
Lesezeichen