Hallo!
Ich möchte mit folgenden Code eine bzw mehrere Dateien bearbeiten.
Dazu habe ich, wie im Code zu sehen, versucht eine Datei zu öffnen und diese in ein riesiges Array zu packen.
Irgendwie will mit meinem Test das Programm die Datei nicht vollständig kopieren??
Wenn ich malloc weglasse und durch ein statisches array erstetze funktioniert es anstandslos.
Bitte helft mir!!
Ich möchte mit folgenden Code eine bzw mehrere Dateien bearbeiten.
Dazu habe ich, wie im Code zu sehen, versucht eine Datei zu öffnen und diese in ein riesiges Array zu packen.
Irgendwie will mit meinem Test das Programm die Datei nicht vollständig kopieren??
Wenn ich malloc weglasse und durch ein statisches array erstetze funktioniert es anstandslos.
Bitte helft mir!!
Code:
char *FILE_RAM(char *n_datei)
{
struct stat attribut;
long z_datei, x;
char *buffer;
unsigned int c;
FILE *datei = fopen(n_datei, "r+b");
if(datei == NULL)
{
printf("Datei: %s konnte nichte geoeffnet werden!\n", n_datei);
return "1";
}
else
{
if(stat(n_datei, &attribut) == -1)
{
printf("Fehler bei stat\n");
return "1";
}
z_datei = attribut.st_size;
}
buffer = malloc(z_datei * sizeof(char));
if(buffer == NULL)
{
printf("Fehler bei malloc\n");
return "1";
}
for(x=0; x<=z_datei; x++)
{
c=fgetc(datei);
buffer[x] = c;
}
printf("z_datei = %ld\n", z_datei);
printf("strlen(buffer) = %ld\n", strlen(buffer));
//FÜR TESTZWECKE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
FILE *neu = fopen("neu","w+b");
for(x=0; x<=z_datei; x++)
putc(buffer[x], neu);
////////////////////////////////////////////////////////////////
fclose(datei);
return buffer;
}