0
"#"で始まるすべての行をスキップしようとしていますが、現在のコードが4番目のコメントに当たったとき以外は動作しているようですが、私は必要です。私がこれを証明したやり方は、2枚の写真であり、1つはコメントの後に余分な入力が加えられ、プログラムは正しい出力を提供し、もう1つは正しい入力ではあるが出力が間違っている(私は余分な入力なしで入力を使用する必要があるライン)。 はまた、私は問題が発生していたコードのセクションを添付しています。あなたの助けをありがとう!C fgetsでcontinueが複数の行をスキップしています
正しい出力、txtファイルに間違って追加された新ライン
コード:
a = 0 ;
while(fgets(line, sizeof(line),fp) != NULL)
{
if (line[0] == '#')
{
continue;
}
else if (MAX_X==0 && MAX_Y==0)
{
if ((sscanf(line,"%d %d", &MAX_X, &MAX_Y)==2) && MAX_X>0 && MAX_X <= 1000 && MAX_Y>0 && MAX_Y<=1000){
continue;
}
}else if (NUM_PT==0)
{
if ((sscanf(line, "%d", &NUM_PT)==1)&& NUM_PT>0 && NUM_PT<=1000)
continue;
}
else if((fscanf(fp,"%d %d", &X_COORD[a], &Y_COORD[a]))&& X_COORD[a]>=0 && X_COORD[a]<=MAX_X && Y_COORD[a]>=0 && Y_COORD[a]<= MAX_Y)
{
a++;
continue;
}
else if(strcmp(line, "")==0)
{
return -1;
}
}
スタックオーバーフローへようこそ!コードを画像ではなくプレーンテキストとして投稿します。コードの書式設定のヘルプについては、https://stackoverflow.com/help/formattingを参照してください。 – Barmar
'関数fgets()'入力に改行を含みます。 'line'は' "\ n" 'だから' strcmp(line、 "")== 0は空白行には当てはまりません。 – Barmar
なぜ 'sscanf()'の代わりに 'fscanf() '第3の' else if'では? – Barmar