2012-06-12 4 views
0

새로운 인턴이되었으므로이 사람들 중 일부가 작성한 많은 더러운 코드를 수정해야합니다.fscanf가이 C 코드에서 오류가 발생했습니다.

data11 data12 data13 data14...data17 
data21 data22 data23 data24...data27 
... 

I 느낌 :

기본적으로
for (i=0; i<TOOL_LIMIT; i++) 
     { 
       if (0 >= fscanf(fp,"%s %s %s %s %s %s %s\n",coreData[i][0],\ 
coreData[i][1],coreData[i][2],coreData[i][3],coreData[i][4],coreData[i][5], coreData[i][6])) 
       { 
         break; 
       } 
       totalCases++; 
     } 
     fclose(fp); 

, FP는 다음과 같은 정규식 패턴이 일부 파일을 열 : Heres는 코드 조각은 내가 정확한 문제가 무엇인지 파악 좀 문제가 있어요 이 코드는 의도 한대로 작동하지 않습니다. 기본적으로 파일의 각 라인을 읽고, 다음과 같이 배열 coreData를 채우는 것으로 가정합니다. 나는 fscanf가 여기 보이는 것처럼 작동한다고 생각하지 않지만 잘못 될 수 있습니다. 이 코드는 정상적으로 작동합니까? 나는 잠시 동안 c로 파일 io를 수행하지 않았다.

편집 ;; 죄송합니다. 오류에 대한 간략한 개요를 제공해야합니다. 기본적으로 C 스크립트는 일부 입력 (오류가있는 파일)을 가져 와서 해당 파일을 fp ('fp_file')로 연 파일의 데이터와 일치시키고 HTML 테이블을 생성하는 CGI 스크립트입니다. 오류가있는 파일이 fp_file에 나타나면 일부 추가 정보 (예 : data12 등)가 인쇄되고 그렇지 않으면 해당 테이블의 항목이 비어있게됩니다. 예 파일 f01에 오류가 있습니다. fp가 'f01'인지 확인합니다. 존재하는 경우 해당 파일 (작성자 등)에 대한 추가 정보를 보여줍니다.

나는 하나의 파일 (fp의 첫 번째 줄)이 올바르게 일치한다는 것을 알게되었습니다. 그 밖의 나머지 오류 파일에는 공백이 있습니다.

+0

어떻게 실패합니까? – JAB

+0

'coreData'의 종류는 무엇입니까? 'fscanf'의 반환 값은 무엇입니까? 'fscanf' 호출 후'coreData' 변수의 값은 무엇입니까? ** small **, ** complete ** 테스트 케이스를 제공 할 수 있다면 도움이 될 것입니다. http://sscce.org/를 참조하십시오. –

+0

어떻게 실패했는지 편집했습니다. 그리고 샘플 파일을 테스트로 사용하고 있습니다. 나는 그것이 첫 번째 줄을 지나가고 있지 않다는 느낌을 가지고있다. – de1337ed

답변

1

이 코드는 공백으로 구분 된 여섯 단어의 그룹을 읽고 coreData 배열에 저장합니다.

필자는 입력 줄에 공백으로 구분 된 여섯 단어가있는 한 작동한다고 생각합니다. 조건을 약간 강화하고 fscanf가 6과 다른 값을 반환하자마자 루프에서 벗어날 수 있습니다 (fscanf는 성공적으로 읽은 요소의 수를 반환합니다).

+0

죄송합니다. 실수로 입력했는데 파일 당 한 줄에 정확히 7 단어가 포함되어 있으며 fscanf는이를 반영합니다. – de1337ed

관련 문제