Danke für die Antwort.
Also ich glaub ich hab mich vorhin bisschen falsch ausgedrückt was ich machen möchte^^.
Also ich habe daten in einer txtdatei(quelle) stehen. diese sollen in ein puffer eingelesen werden und dann in eine andere txtdatei(ziel) eingefügt werden.
Jetzt kommt meine frage, ich will die daten die in der quelldatei stehen von unten anfangen einzulesen.
Ich hab mir das halt so vorgstellt das ich die daten nochmal einlese und diese jeweils eine nummer gebe. Und später dann mit der höchsten Zahl anfange die im array steht und diese dann in die zieldatei kopiert.
Ich poste einfach mal den code hier rein:
Also ich glaub ich hab mich vorhin bisschen falsch ausgedrückt was ich machen möchte^^.
Also ich habe daten in einer txtdatei(quelle) stehen. diese sollen in ein puffer eingelesen werden und dann in eine andere txtdatei(ziel) eingefügt werden.
Jetzt kommt meine frage, ich will die daten die in der quelldatei stehen von unten anfangen einzulesen.
Ich hab mir das halt so vorgstellt das ich die daten nochmal einlese und diese jeweils eine nummer gebe. Und später dann mit der höchsten Zahl anfange die im array steht und diese dann in die zieldatei kopiert.
Ich poste einfach mal den code hier rein:
C:
int main(int argc, char* argv[])
{
char srcname[256]; // Quelldateiname
char destname[256]; // Zieldateiname
unsigned int delay; // Verzoegerungszeit in s
FILE* srcfile, * destfile; // Quell- bzw. Zieldatei
int max_lines = 50;
struct stat filestat; // Dateiattributstruktur
char sbuffer[max_lines][256]; // Zeilenpuffer fuer lesen
int linesize; // Zeilenpuffergroesse
char* fbuffer; // Dateipuffer fuer schreiben
int i = 0;
// lese Programmparameter ein
if (argc != 4)
{
usage();
return EXIT_FAILURE;
}
else
{
sscanf(argv[1], "%s", srcname);
sscanf(argv[2], "%s", destname);
sscanf(argv[3], "%u", &delay);
}
// oeffne Quelldatei
srcfile = fopen(srcname, "rt");
if (srcfile == NULL)
{
fprintf(stderr, "FEHLER: %s kann nicht geoeffnet werden.\n", srcname);
return EXIT_FAILURE;
}
// Hauptschleife
while(i < max_lines && fgets(sbuffer[i], sizeof(sbuffer[i]), srcfile) != NULL)
{
++i;
// oeffne Zieldatei
if ((destfile = fopen(destname, "rt")) == NULL)
{
fprintf(stderr, "FEHLER: %s kann nicht geoeffnet werden.\n", destname);
return EXIT_FAILURE;
}
// lese Zieldatei in Puffer aus
stat(destname, &filestat); // status abfrage
// linesize = strlen(sbuffer); // linesize ist stringlänge von sbuffer
fbuffer =(char*) calloc(filestat.st_size + max_lines/*linesize*/, 1); // dynamische speicherreservierung an fbuffer
fread(fbuffer + max_lines/*linesize*/, filestat.st_size, 1, destfile); // liest den speicherblock der destfile
fclose(destfile); // schließe destfile
// schreibe Zeile in den Puffer
memcpy(fbuffer,sbuffer,max_lines/*linesize*/); // Speicher speicherblock, stringlänge von srcfile und stringlänge von sbuffer
// schreibe Puffer in Zieldatei
destfile = fopen(destname, "w+t"); // öffne destfile zum schreiben eines textes
fwrite(fbuffer, strlen(fbuffer), 1, destfile); // schreibe den speicherblock von fbuffer, die stinglänge von fbuffer in die destfile
free(fbuffer); // speicherbereich von fbuffer wird freigegeben
fclose(destfile); // schließe destfile
// verzoegere Programmausfuehrung
sleep(delay);
}
fclose(srcfile);
return EXIT_SUCCESS;
}