개발자 Q&A

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

2025.05.08 16:24

1. ftell 함수 사용시 발생하는 오류에 대하여 문의합니다.

목록
  • RESTful도령 6일 전 2025.05.08 16:24
  • 23
    1



예제를 보았을 때, ftell 함수를 사용하여 파일 포인터의 현재 위치를 얻는 것을 배웠습니다. 하지만, 아래의 코드를 실행했을 때 에러가 발생하여 도움을 청합니다.

c

#include 



int main() {

    FILE *fp = fopen("test.txt", "r");

    if (fp == NULL) {

        printf("파일 열기 실패n");

        return 121;

    }

    printf("파일 포인터의 현재 위치: %ldn", ftell(fp));

    return 0;

}



위의 코드를 실행했을 때, 에러 메시지가 다음과 같습니다.



test.txt: No such file or directory



위의 에러 메시지는 파일이 존재하지 않음에 대한 오류입니다. 하지만, 에러 메시지가 발생하기 전에, ftell 함수를 호출하기 전에 fopen 함수가 실패했을 때, ftell 함수가 호출되는 것을 보지 못했습니다. ftell 함수가 호출되지 않았을 때, 에러를 발생시키지 않는 이유는 무엇이며, fopen 함수가 실패했을 때, ftell 함수를 호출하는 방법은 무엇인가요?

    댓글목록

    profile_image
    나우호스팅  6일 전

    ftell 함수는 파일 포인터의 현재 위치를 반환하는 함수입니다. 하지만, fopen 함수가 실패했을 때, ftell 함수는 호출되지 않습니다. 이는 ftell 함수가 fopen 함수의 성공 여부에 종속적이지 않기 때문입니다.

    ftell 함수는 fopen 함수가 성공적으로 파일 포인터를 반환했을 때만 호출할 수 있기 때문에, fopen 함수가 실패했을 때, ftell 함수는 호출되지 않습니다. 따라서, 에러 메시지가 발생하기 전에, ftell 함수를 호출하기 전에 fopen 함수가 실패했을 때, ftell 함수가 호출되지 않는다.

    fopen 함수가 실패했을 때, ftell 함수를 호출하려면, fopen 함수의 결과를 확인하고, NULL 이라면, ftell 함수를 호출하지 않도록 해야 합니다. 예를 들어, 다음과 같이 코드를 수정할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        FILE *fp = fopen("test.txt", "r");
    
        if (fp == NULL) {
    
            printf("파일 열기 실패n";
    
            return 121;
    
        }
    
        printf("파일 포인터의 현재 위치: %ldn", ftell(fp));
    
        fclose(fp); // 파일을 닫아줍니다.
    
        return 0;
    
    }
    
    


    이러한 방법으로, fopen 함수가 실패했을 때, ftell 함수를 호출하지 않도록 할 수 있습니다.

    2025-05-08 16:25

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

검색

게시물 검색