개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.27 10:35

feof 함수를 사용하여 파일의 끝을 확인하는 방법에 대한 도움을 요청합니다.

목록
  • 취약점사냥꾼 24일 전 2025.06.27 10:35
  • 95
    1
feof 함수는 파일의 끝을 확인하는 데 사용되는 함수입니다.
파일을 읽는 중에 feof 함수를 사용하여 파일의 끝을 확인할 수 있습니다.
feof 함수의 반환값은 0이면 파일의 끝이 아니며, 1이면 파일의 끝입니다.
하지만, feof 함수는 파일을 읽는 중에 파일의 끝을 확인할 때만 정확한 값을 반환합니다.
파일을 읽고 나면 feof 함수의 반환값은 항상 0이 됩니다.
feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것은 맞지만, 파일의 끝이 아니라는 것은 보장할 수 없습니다.

c

#include 



int main() {

    FILE *file;

    char c;



    file = fopen("test.txt", "r");

    if (file == NULL) {

        printf("파일을 열 수 없습니다.n");

        return 0;

    }



    while ((c = fgetc(file)) != EOF) {

        printf("%c", c);

    }



    if (feof(file)) {

        printf("파일의 끝입니다.n");

    } else {

        printf("파일의 끝이 아닙니다.n");

    }



    fclose(file);

    return 0;

}



위의 코드에서 feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것은 맞지만, 파일의 끝이 아니라는 것은 보장할 수 없습니다.
파일을 읽고 나면 feof 함수의 반환값은 항상 0이 됩니다.
feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것을 어떻게 알 수 있을까요?

feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것을 어떻게 알 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  24일 전



    feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것을 알 수 있는 방법은 다음과 같습니다.

    1. 파일 포인터를 다시 읽기 모드로 옮기기: 파일을 읽은 후에 파일 포인터를 다시 읽기 모드로 옮겨 feof 함수를 호출합니다. 이때 feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것을 알 수 있습니다.

    #hostingforum.kr
    c
    
    if (fseek(file, 0, SEEK_SET) == 0 && feof(file)) {
    
        printf("파일의 끝이 아닙니다.n");
    
    } else {
    
        printf("파일의 끝입니다.n");
    
    }
    
    


    2. 파일의 크기를 확인하기: 파일의 크기를 확인하여 파일의 끝을 확인할 수 있습니다. 파일의 크기를 확인하는 방법은 다음과 같습니다.

    #hostingforum.kr
    c
    
    fseek(file, 0, SEEK_END);
    
    long fileSize = ftell(file);
    
    fseek(file, 0, SEEK_SET);
    
    
    
    if (fileSize > 0) {
    
        printf("파일의 끝이 아닙니다.n");
    
    } else {
    
        printf("파일의 끝입니다.n");
    
    }
    
    


    3. 파일을 다시 읽기: 파일을 다시 읽어 파일의 끝을 확인할 수 있습니다. 이 방법은 이전 방법보다 느리지만, 파일의 끝을 정확하게 확인할 수 있습니다.

    #hostingforum.kr
    c
    
    if (fread(NULL, 1, 1, file) == 1) {
    
        printf("파일의 끝이 아닙니다.n");
    
    } else {
    
        printf("파일의 끝입니다.n");
    
    }
    
    


    위의 방법 중 하나를 사용하여 feof 함수의 반환값이 0이면 파일의 끝이 아니라는 것을 알 수 있습니다.

    2025-06-27 10:36

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,905건 / 84 페이지

검색

게시물 검색