私は数字がいっぱいの1列のファイルを持っているので、すべてのファイルを集計したい。問題は、無効なデータが見つかるとすぐに終了することです(fprintf
が失敗するとすぐに終了することができます)。複数のファイルを読むときに読書を停止する(gotoを使わない)
goto
を使用して最初の試みは(とthis answerに触発さ)私はよりよい解決策を(すなわちgoto
とwhile(1)
を使用していない!)見て喜んだろう次
while(1) {
sum_a = 0;
for(i=0 ; i<N ;i++){
if(fscanf(infiles[i], "%d\n", &a) != 1){
goto end; // yeah, I know...
}
sum_a += a;
}
printf("%d\n", sum_a); // Should NOT be read if anything failed before
}
end:
for(i=0 ; i<N ;i++)
fclose(infiles[i]);
です。私は多くの旗をセットして汚れたままにしておきたい。
この質問はおそらくStackOverflowではなくhttp://codereview.stackexchange.com/の良い候補です。 – Leandros
int is_ok = 1; while(is_ok){body; if(失敗)is_ok = 0; } –