1. ホーム
  2. c

[解決済み] fopen()におけるr+とw+の違いについて

2023-07-14 12:21:14

質問

fopen("myfile", "r+") の違いは何ですか? "r+""w+" を開くモードですか?私はこれを読んだ。

"r" テキストファイルを読み込むために開く。

"w" テキストファイルを書き込み用にオープンする。 既存のファイルをゼロの長さに切り詰めたり、ファイルが存在しない場合は作成したりします。

"r+" 更新のためにテキストファイルを開く。 書き込みの両方)。

"w+" 更新(読み書き)用にテキストファイルを開く。 まず、ファイルが存在する場合は長さをゼロに切り詰め ファイルが存在する場合は長さをゼロに切り詰め、存在しない場合はファイルを作成します。

つまり違いは、ファイルを "w+" で開くと、先にファイルが消されてしまうということでしょうか?

どのように解決するのですか?

主な違いは w+ は、ファイルが存在する場合は長さをゼロに切り詰め、存在しない場合は新しいファイルを作成することです。一方 r+ はコンテンツを削除せず、存在しない場合は新しいファイルを作成しません。

これらのコードを試してみて、あなたは理解するでしょう。

#include <stdio.h>
int main()
{
   FILE *fp;

   fp = fopen("test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}  

そして、この

#include <stdio.h>
int main()
{
   FILE *fp;

   fp = fopen("test.txt", "w+");
   fclose(fp);
}   

もし、あなたが test.txt を開くと、最初のプログラムによって書き込まれたすべてのデータが消去されていることがわかります。

これを繰り返して r+ を繰り返し、その結果をご覧ください。

以下は、さまざまなファイルモードのまとめです(1 => ture , 0 => false ):