#include <stdio.h>

int main (void)

{

 FILE * fp = fopen("fds.txt", "rt");

 char str[100];

 if(fp==NULL)

  printf("에러");

 while(!feof(fp))

 {
  fgets(str, sizeof(str), fp);

  printf("%s", str);


 }

 fclose(fp);

return 0;

}


텍스트파일안에 엔터하나 친다음에 저장했음.

그다음에 위의 코드대로 실행했더니 엔터가 두번 찍혀나옴.

나는 파일안에 [\n][eof] 이렇게 저장되어서

맨처음에 \n 찍고나면 지시자가 eof 가리키니까 while문에 걸려서 팅겨나올줄 알았는데

왜 엔터값이 두번이나 출력되는지가 궁금


---

신기한건 while문을

 while(fgets(str, sizeof(str), fp) != NULL)

 {
    printf("%s", str);
 }


이렇게 수정하면 내가 의도한대로 엔터가 한번찍히고 끝남