1

この fseek() 関数をコードで動作させるのに問題があります。私が書いたテキストは、私が示した時点から始まっていません。その理由はわかりません。\n から書き込みを開始し、すべてのテキスト ファイルを上書きするだけです。それを開いたとしてもa、パラメーターを介してコマンドを実行する場所には行きません。

   fclose(file);
    FILE *file_a = fopen("ex6.txt", "w");

    fseek(file_a, -1, SEEK_END);

    puts("Write text to add:");
    while((letter = getchar()) != '\n')
    {
        fputc(letter, file_a);
    };

何が起こっている?なぜこれが機能しないのですか?

4

1 に答える 1

1

絶対への移動は、ファイルがバイナリ モードで開かれている場合にのみ機能します。テキスト モードで開いている場合fseek()、ファイル内の 0 (ファイルの先頭) 以外の絶対位置に移動することはできません。移動しようとすると、未定義の動作が発生します。ただし、 によって返されたファイル内の参照にナビゲートすることはできますftell()。この理由は、一部のオペレーティング システムによる特定の文字の処理によるものです。一部の実装では許可されていますが、POSIX では義務付けられていません。

コメントで問題を解決したことは知っていますが、これは単なる閉鎖です。

于 2013-06-25T20:24:52.890 に答える