C언어로 파일을 읽을 때 fsacnf로 읽을 경우, 마지막에 읽은 값이 두번 나오는 경우가 있다. 다음과 같이 코드를 짰을 경우에 그렇다.


while(!feof(fp)){

 fsacnf(fp, "%s", &var_char);

}


이 경우 feof가 파일의 끝(EOF)을 만나자마자 이를 인지하지 못하기 때문에 발생하는 문제(?)라고 한다. 자세히는 모르겠으나, 해결 방법은 다음과 같이 fscanf의 return 값이 EOF인지 판단하는 것이다.


while( EOF!=fscanf(fp, "%s", &var_char))

   printf("%s", var_char);


출처는 https://kldp.org/node/35102 

+ Recent posts