2017-10-10 4 views
0

"#"으로 시작하는 모든 줄을 건너 뛰려고합니다. 현재 코드가 네 번째 주석에 도달 할 때를 제외하고는 작동하는 것처럼 보입니다. 그런 다음 좌표의 첫 번째 줄을 건너 뜁니다. 내가 필요로하는. 필자가 증명 한 방식은 두 장의 그림으로 주석 뒤에 추가 입력이 추가되고 프로그램이 올바른 출력을 제공하고 두 번째 입력이 올바른 입력이지만 잘못된 출력이있는 경우입니다 (필자는 추가 입력없이 입력을 사용해야합니다. 선). 문제가 발생한 부분에서 코드 섹션을 첨부했습니다. 도와 줘서 고마워!C fgets에서 continue가 두 줄 이상 건너 뛰고 있습니다.

enter image description here

올바른 출력, txt 파일에 잘못된 추가 된 새로운 라인

enter image description here

코드 :

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; 

    } 
} 
+2

스택 오버플로에 오신 것을 환영합니다! 이미지가 아닌 일반 텍스트로 코드를 게시하십시오. 코드 형식 도움말은 https://stackoverflow.com/help/formatting을 참조하십시오. – Barmar

+2

'fgets()'는 입력에 개행 문자를 포함합니다. 'line'은'\ n "' – Barmar

+1

인데 왜''strcmp (line," ") == 0''이 빈 라인에는 맞지 않습니다. 왜''sscanf() 대신'fscanf() '3 번째'else if'에서? – Barmar

답변

0

당신은 줄에 오류가

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; 

} 
,

방금 ​​LINE 매개 변수를 스캔 한 다음이 행에서 스캔 매개 변수 대신 새 행을 스캔했습니다.

관련 문제