-1

ファイルを読み取ってから書き込む必要があります。とにかく完全に上書きするので、「r +」は使いたくありません。しかし、ファイルを完全に閉じることができません。ファイルを 2 回目に開こうとすると、アプリケーションがクラッシュします (開くことができません)。ファイルを完全に閉じる方法を知っている人はいますか。

そして、これは実際のコードではなく、私がやりたいことの要約です:

FILE* f;
fopen_s(&f, "test.txt", "r");
// read file and edit data
fclose(f);
f = 0;
fopen_s(&f, "test.txt", "w");
fprintf(f, "%c", data);
fclose(f);
4

1 に答える 1

2

fclose()ファイルを閉じます。それはそれを半分閉じません。ファイルを「完全に閉じる」という概念は存在しません。ファイルは開いているか閉じています。間にはありません。

あなたのコードではfopen_s()、ファイルを開くために使用していますが。その機能が何なのかわかりません。のように機能すると思いますfopen()が、ポインタを返す代わりFILEに、引数に格納します。

したがって、あなたの質問に対する答えは次のとおりです。ファイルを「完全に」閉じるには、を使用しますfclose()。あなたがすでにしているように。それはあなたが抱えている問題が他の場所にあることを意味します。

于 2012-10-26T17:22:19.723 に答える