3

の使用法をテストしていますがfprintf()、機能していません。\n最初にコードを書いたとき、内部に追加するのを忘れていましたが、fprintf()うまくいきました。しかし、\n「テスト12」の開始時に追加すると、動作しなくなりました。

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

int main ()
{
    FILE* f = fopen("test.txt", "r+");
    if( f == NULL) return 0;

    char str[4][10];

    for(int a = 0; a <= 3; ++a)
    {
        fscanf(f, " %[^\t\n]s", str[a]);
        printf("%s\n", str[a]);
    }

    fprintf(f, "\ntest 1 2\n");

    fclose(f);
    system("pause");
    return 0;
}

私のtest.txtには次のものが含まれています(代わりに\t\nタブを押してファイルに入力しましたが、ここでは管理できませんでした)

ab\tcd\te\n fg

4

1 に答える 1

8

追加用に開いているファイル (「+」記号を含むもの) で、入力操作と出力操作の両方が許可されている場合、書き込み操作とその後の書き込み操作の間に、ストリームをフラッシュ (fflush) または再配置 (fseek、fsetpos、rewind) する必要があります。読み取り操作、またはファイルの終わりに達しなかった読み取り操作とそれに続く書き込み操作。

ソース

これを追加します:

fflush(f);

以前のfprintf内容を削除せずにファイルに追加する場合、またはこれの前に:

rewind(f);

コメントで指摘されているように、コンテンツを上書きする場合。

于 2013-01-16T17:48:40.537 に答える