2011-02-18 7 views
3

내 프로그램에서 infile에서 마지막 줄의 데이터를 두 번 읽는 중입니다. 프로그램을 실행하면 데이터의 마지막 줄이 두 번 인쇄됩니다. 도와주세요! 여기에 코드, 나는이 때문에 feof 기능의 발생 희망파일 끝 부분이 C

while (!feof (in)) { 
//fread(); 
} 

이다.

fgets 또는 getline을 사용하고 싶지 않습니다. 다른 방법이 있습니까? 제발 지시 해주세요.

저에게 응답 해 주신 모든 분들께 감사드립니다! 나는 이것을위한 해결책을 얻었다! 나는 fgetcunfgetc을 옆에 넣고 do 루프를 사용했다. 여기

코드입니다 :

int ch; 
ch=fgetc(fp); 
do 
{ 
ungetc(ch,fp); 
//fread(); 

ch=fgetc(fp); 
} while((ch = fgetc(fp)) != EOF && ch != '\n'); 
+1

파일에서 어떤 기능을 사용 하시겠습니까? – karlphillip

+2

코드는 어디에 있습니까? –

+1

코드에서 줄을 더 추가 할 수 있습니까? –

답변

6

당신이 직면하고있는 문제에 대한이 post 회담.

+0

+1 그게 다야! 잘 했어. – karlphillip

+1

+1 좋은 링크. "실제로 feof()를 사용할 이유가 없습니다 .C 입력 함수는 EOF를 확인하는 데 사용할 수있는 값을 반환합니다 (예 : fgets는 EOF에 NULL 포인터를 반환합니다)." –

1

feof()을 올바르게 사용하려면 do ... while 루프를 사용해야합니다. c.

if (!feof()) // in case the file is zero length. 
{ 
    do 
    { 
     //whatever....   
    } while(!feof()) 
} 
+0

'do'를 사용해 보았지만 마지막 데이터 블록을 두 번 읽음 –

1

시험해보세요. 입력 작업에 fscanf을 사용하십시오.

while(fscanf(stdin, "%s", in) != EOF) { 
//your code 
} 
관련 문제