0
"#"으로 시작하는 모든 줄을 건너 뛰려고합니다. 현재 코드가 네 번째 주석에 도달 할 때를 제외하고는 작동하는 것처럼 보입니다. 그런 다음 좌표의 첫 번째 줄을 건너 뜁니다. 내가 필요로하는. 필자가 증명 한 방식은 두 장의 그림으로 주석 뒤에 추가 입력이 추가되고 프로그램이 올바른 출력을 제공하고 두 번째 입력이 올바른 입력이지만 잘못된 출력이있는 경우입니다 (필자는 추가 입력없이 입력을 사용해야합니다. 선). 문제가 발생한 부분에서 코드 섹션을 첨부했습니다. 도와 줘서 고마워!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 "' – Barmar
인데 왜''strcmp (line," ") == 0''이 빈 라인에는 맞지 않습니다. 왜''sscanf() 대신'fscanf() '3 번째'else if'에서? – Barmar