「C言語/ファイル入出力」の版間の差分

削除された内容 追加された内容
編集の要約なし
811 行
 
上記のコードのあとに読み込むをしたい場合、再度 <code> fopen </code> の読み込みモードで開いてからでないと、 <code> fgets </code> などの読み込み命令は実行できないのです。
 
 
=== if文の条件節にファイルポインタを使った場合にはブロック内でクローズできない ===
タイトルのとおり、下のようなコードがあると、エラーになります。
 
このエラーの起きるコードでは、if文の条件節にファイルポインタを使ったif文の中で、むりやりクローズしようとしています。
 
<source lang=c>
if ( (fp1 = fopen("sanpuru1.txt", "r") ) == NULL) { // ここを読み取りモード"r"にするのを忘れないように
printf("ファイルを開けませんでした。\n");
system("pause");// 「続行するには何かキーを押してください . . .」の待機命令
 
fclose(fp1); // ここでクローズするとエラーになる。
return 1;
}
</source>
 
 
ついつい、ファイルを開けなかった場合などには、「この命令は用済みだから、すぐファイルを閉じよう(×)」って発想で、むりやりブロック中でクローズしようと思いたくなります。
しかし、上記のように、、if文の条件節にファイルポインタを使ったif文の中で、むりやりクローズしようとしても、エラーになります。
 
 
ただし、所属しているブロックの条件判定文で'''使ってない''' ファイルポインタおよび別ファイルなら(たとえば ファイルポインタ fp20 と 対象ファイル名"sanpuru20" とする)、それは条件節のファイルとはまったくの別物ですので、fp1のif文のブロック内でも別物のfp20と"sanpuru20"はオープンすることもクローズも可能です。
 
 
=== メモのあるファイルの数値の読取 ===