58

ファイル myfile.txt の内容を c の 2 番目のファイル myfile2.txt の末尾に追加しようとしています。内容をコピーできますが、追加する方法が見つかりません。これが私のコードです:

FILE *pFile;
FILE *pFile2;
char buffer[256];

pFile=fopen("myfile.txt", "r");
pFile2=fopen("myfile2.txt", r+);
if(pFile==NULL) {
    perror("Error opening file.");
}
else {
    while(!feof(pFile)) {
        if(fgets(buffer, 100, pFile) != NULL) {
        fseek(pFile2, -100, SEEK_END);
        fprintf(pFile2, buffer);
    }
}
fclose(pFile);
fclose(pFile2);

私は fseek を正しく使用しているとは思いませんが、私がやろうとしているのは、fseek を呼び出してポインターをファイルの最後に置き、ファイルの先頭ではなく、そのポインターの場所に書き込むことです。ファイル。これは正しいアプローチですか?

4

2 に答える 2

92

追加して開く:

pFile2 = fopen("myfile2.txt", "a");

次に、に書き込むだけpFile2で、必要はありませんfseek()

于 2013-10-17T14:16:20.597 に答える
19

のドキュメントに従うfopen

``a'' 書き込み用に開きます。ファイルが存在しない場合は作成されます。ストリームはファイルの最後に配置されます。ファイルへの後続の書き込みは、介在する fseek(3) などに関係なく、常にその時点でのファイルの終わりで終了します。

したがってpFile2=fopen("myfile2.txt", "a");、ストリームが最後に配置されている場合、自動的に追加されます。ただ行う:

FILE *pFile;
FILE *pFile2;
char buffer[256];

pFile=fopen("myfile.txt", "r");
pFile2=fopen("myfile2.txt", "a");
if(pFile==NULL) {
    perror("Error opening file.");
}
else {
    while(fgets(buffer, sizeof(buffer), pFile)) {
        fprintf(pFile2, "%s", buffer);
    }
}
fclose(pFile);
fclose(pFile2);
于 2013-10-17T14:17:00.913 に答える