web-dev-qa-db-ja.com

Cのファイルの最後に追加する

ファイル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を呼び出してファイルの最後にポインターを置き、そのポインターの場所ではなく、そのポインターの場所に書き込むことであるファイル。これは正しいアプローチですか?

38
Sonofblip

追加して開く:

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

pFile2に書き込むだけで、fseek()は不要です。

61
cdarke

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);
15
Sergey L.