fopenのファイルのいくつかの開くモードの比較

1069 ワード

r:読み取り専用
 
w:書くだけで、createとtruncateの意味があります.
 
r+:updateモードは、読み取りと書き込みが可能であり、ファイルが存在する必要があり、truncateの意味がない.読み取りと書き込みは同じポインタ位置を共有し、読み取り前に書き込み操作が発生した場合はfflushやfseekなどのファイル位置決め操作を呼び出す必要があります.例えばファイルがありますtxt:cds 555 ccc.
r+モードでファイルを開いて実行します.
FILE* pFile=fopen("out.txt","r+");
fprintf(pFile,"%s","fff");
fflush (pFile);//   fseek(pFile,0,SEEK_CUR);
int d=0;
fscanf(pFile,"%d",&d);
cout<

555が出力され、fff 555 cccにファイルが変更されます.説明fprintfが呼び出されると、ファイル位置ポインタが移動されます.またfflushを書かないと奇妙な現象が発生し,ファイルはfffに修正され,dまで読まれず,0が出力される.
書き込み操作が読み取り操作の後に発生した場合、書き込み操作の前にfseekなどの位置決め関数を呼び出さなければなりません.そうしないと、ファイルの更新に成功しません.例えばファイルtxtの内容はfff 123 cccであり、以下の操作がある.
FILE* pFile=fopen("out.txt","r+");
char str[10];
fscanf(pFile,"%s",str);
cout<

fffが出力され、fff 111 cccにファイルが変更されます.しかし、fseek操作がなければ、fprintfはファイルを変更せず、ファイル内容はfff 123 cccである.
w+:updateモードでファイルをcreateし、ファイルが存在する場合はtruncateします.