2009-04-20 6 views
1

ファイルの借り方にテキストを追加する小さなコードブロックがあります。しかし、それはまだファイルの最後に追加されます。リワインドがファイルの先頭にポインタを置いたと思ったので、fprintfを使ってテキストを追加したとき、フロントに追加するはずです。これをどうやって変更できますか?ファイルの先頭へのアクセス

fp = fopen("Data.txt", "a"); 
rewind(fp); 
fprintf(fp, "%s\n", text); 
fclose(fp); 

テキストが追加モードで開かないでください)ファイル

答えて

12

1の前面に追加される文字列です。

追加モードで開くと、シーク位置に関係なく、すべての書き込みがファイルの最後に移動します。

http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html

追加モード(モード 引数で として最初の文字)を使用してファイルを開くと、後続のすべての が 現在の終わりに強制的にファイルに書き込みせなければなりませんfooek()への呼び出しを にするかどうかにかかわらず、-fileになります。

2)「a」を付けずに開くと、やはり必要なことはできません。 ANSI/POSIXファイル操作を使用してファイルに挿入することはできません。なぜなら、ほとんどのファイルシステムがデータを格納する方法では、挿入は単純な操作ではないからです。

新しいファイルを開いたり、新しいデータを書き込んだり後で古いファイルを追加したり、シャッフルしているデータをブロック単位で転送する必要があります。いずれのオプションも大きなファイルの場合は、最後に追加する場合と比べて非常に効率が悪いです。プログラムやマシンが予期せずデータを破損することなく死ぬことが必要な場合はエラーが発生しやすくなります。したがって、これがログファイルなのであれば、新しいデータを最後に書き込んだり、ログからレポートを準備するときにそのデータを元に戻すことができるように、再設計する価値があります。

4

ファイル内のデータを置き換えることはできますが、ファイルの最後尾には挿入したり挿入したりすることはできません。

0

データで新しいファイルを作成し、作成したこのファイルに古いデータを追加するだけです。

関連する問題