Przepisanie zawartości z jednego pliku do drugiego

0

Chcę przepisać zawartość jednego pliku do drugiego.

Myślałem, żeby zrobić to w pętli linijka po linijce: pobieram linijke z pliku1 do zmiennej, zmienna zapisuje do pliku2. Ten sposób jest dobry czy można to zrobić szybciej?

2

Linijka po linijce w C? Chciałbym zobaczyć jak to zrobisz ;] Ja bym jednak zaalokował jakiś bufor na kilka MB i kopiował po takich kawałkach.

0

fscanf(plik1,"%d",pom);
fprintf(plik2,"%d",pom);

Zapomniałem wspomnieć, że chodzi o plik tekstowy i nie rozumiem co do mnie napisałeś.

0

o_O No teraz to czytasz liczba po liczbie, a nie linijka po linijce. Co wiecej, Pana Tadeusza tak nie skopiujesz. Czym u ciebie jest "pom"? Buforem o którym pisałem własnie. Tylko pewnie takim na kilka bajtów. Zrób taki na znacznie więcej i baw sie http://www.cplusplus.com/reference/cstdio/fread/ i http://www.cplusplus.com/reference/cstdio/fwrite

0

No jak zwykle podaje za mało informacji ;/
jedna liczba w linijce wiec dla mnie to bylo linijka po linijce ;d

zmienna typu int, liczby w pliku int, w programie usuwam cos z jednego pliku wiec zapisuje to co nie usuwam zapisuje do pliku tymczasowego i z pliku tymczasowego przepisuje do pliku glownego. Nie wiem czy to dobre rozwiazanie, ale innego nie wymyśliłem.

0

W C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {
    char filename[256] = "";  // source file name
    char file2name[256] = ""; // destination file name
    
    FILE *file;
    FILE *write;
    
    char line[256]; 
    char linec[256]; 

    printf("enter a filename: ");
    scanf("%s", &filename); // source file name
    printf("enter a destination filename: ");
    scanf("%s", &file2name  // destination file name
    file = fopen (filename, "r");   // read
    write = fopen (file2name, "w+" );  // write

    if (file != NULL) {
        while ( fgets ( line, sizeof line, file ) != NULL ) { /* read a line */
            fputs (line, stdout); /* write the line */
            strcpy(linec, line);

            fprintf (write , linec);
        }
        fclose (write);
        fclose ( file );
    }
    else {
        perror (filename); // filename not opened
    }
    
    return 0;
}
 

W C++

 
#include <string>
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

int main() {
  ifstream i ("plik1.txt");
  ofstream o ("plik2.txt");
  string tekst;
 
  for(int j=0; j<2; ++j)i >> tekst;//zapis tekstu z plik1 do zmiennej tekst
 
  o << tekst; //zapis ze zmiennej tekst do plik2
   
  i.close();
  o.close();
   
  system("pause");
  return 0;
}
0
fscanf(plik1,"%d",&pom);
fprintf(plik2,"%d\n",pom);

1 użytkowników online, w tym zalogowanych: 0, gości: 1