2 Files -> 1 File



  • Hi Leute,

    ihr könnt mir doch bestimmt sagen, wie ich zwei Dateien in Ansi C zu einer konkatenieren kann. Sprich ich hab in einer Datei

    ABC stehen und in der 2. XYZ

    Und in meiner Zieldatei soll dann

    ABCXYZ stehen.

    Habt ihr vielleicht ein Link zu einem Tutrial oder sonst eine Idee?

    Gruß Sachse



  • Nacheinander öffnen und in die selbe Zieldatei rüberkopieren:

    FILE* fin,fout;
    fin=fopen("Datei1.txt","r");
    fout=fopen("Dateiaus.txt","w");
    copy(fin,fout);// <- in den FAQs findest du sicher etwas dafür
    fclose(fin);
    fin=fopen("Datei2.txt","r");
    copy(fin,fout);
    fclose(fin);
    fclose(fout);
    


  • cstoll, wohl eher nicht.

    in ansi c gibt es kein copy() und selbst wenn, die modes fuer fopen() machen wenig sinn.

    richtiger code:

    #define LARGENUM 1024
    FILE *fin1, *fin2, *fout;
    char buf[LARGENUM];
    int numread;
    
    fin1 = fopen("fin1", "r");
    fin2 = fopen("fin2", "r");
    fout = fopen("fout", "w");
    
    do {
        numread = fread(buf, 1, LARGENUM, fin1);
        fwrite(buf, 1, numread, fout);
    } while (!feof(fin1) && !ferror(fin1));
    fclose(fin1);
    do {
        numread = fread(buf, 1, LARGENUM, fin2);
        fwrite(buf, 1, numread, fout);
    } while (!feof(fin2) && !ferror(fin2));
    fclose(fin2);
    fclose(fout);
    

    das ganze ginge auch klarer mit fgetc und ohne buffer...



  • Warum postet ihr fertige Lösungen? 👎



  • weil ich auch sachse bin! 🤡
    und weil solche aufgaben echt geschenkt sind. sieht auch nicht wie eine hausaufgabe aus.



  • c.rackwitz schrieb:

    in ansi c gibt es kein copy()

    Deshalb auch der Kommentar hinter dem Befehl -> freigegeben zum selberbasteln 😉

    und selbst wenn, die modes fuer fopen() machen wenig sinn.

    Wieso das? Ich kopiere aus fin (deshalb "r"-Freigabe) nach fout ("w").



  • danke jungs für eure schnelle hilfe.

    der code von dir (c.rackwitz ) hat perfekt funktioniert.

    hat mir viel zeit erspart die ich gut gebrauchen kann.

    danke

    nur das mit den modis hab ich auch nicht verstanden

    und selbst wenn, die modes fuer fopen() machen wenig sinn.
    

    das macht ihr beide doch gleich oder nicht????



  • @CStoll: das "copy()" sollte dann aber wie ein strcat() funktionieren 😛
    aber wayne 😉

    fopen() modi:
    r lesen
    w schreiben
    a anhaengen
    b binaer, modifiziert rwa (rb, wb, ab)
    t text, modifiziert rwa (rt, wt, at)
    + modifiziert rwa (rb+, wt+, a+,...), erlaubt lesen oder schreiben, wenn schon schreiben/anhaengen oder lesen angegeben wurde


Anmelden zum Antworten