fscanfが実行されません。
ファイルから読み取った文字列の内容によって、開くファイルを分岐で区別して、そこに書いてある数字をfscanfで読み取り、クローズするというのをループするプログラム(その間ストリームポインタは同じものを使っています)なのですが、コンパイルも通り実行もエラーはなかったのですが、全て読み取ってループを抜けた後のprintfの出力がされませんでした。
調べると、22回のループのうち21回目までは読み取れていましたが、最後の22回目のfscanfの前まではstderrが出力され、その直後はstderrが出力されず、当然その後のprintf等も通らずに実行が終了していました。これはどうしてなのでしょうか。fscanf文と読み取るファイルは以下の通りです。iはループカウンタです。
fscanf(fp1, ''%d %d'', &unit[i].p_num, &unit[i].t_num);
読み取りファイル
/////////////////
7
3
////////////////
このファイルはループの20回目にも開かれ、それはきちんと読み取れていました。もちろんクローズもされています。
【 補足】
全て書くと多いので、必要と思われるソースだけ追記します。
for(i=0; i<22; i++){
if((fp1=fopen(''sw.txt'',''r''))==NULL){ //i=19,21の時通るようにしてある
printf(''ファイルが見つかりません'');
exit(EXIT_FAILURE);
}
//ここでelse{}を作ると通る
//iがいくつでもここでのstderrは実行される
fscanf(fp1, ''%d %d'', &unit[i].p_num, &unit[i].t_num);
//i=21の時ここでのstderrが実行されない
fclose(fp1);
}
printf(''〜'');//実行されない
また、読み込みファイルのフォーマットを
7 3
のように修正しても結果は同じでした。