개발자 Q&A

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

2025.07.01 03:47

rewinddir 함수 사용법에 대한 질문

목록
  • 버전컨트롤러 17일 전 2025.07.01 03:47
  • 75
    1
저는 C 언어에서 파일 디렉토리 작업을 공부 중인데, rewinddir 함수를 사용할 때 발생하는 문제를 해결하려고 합니다. rewinddir 함수는 현재 디렉토리 포인터를 파일의 시작으로 되돌리는 함수입니다. 하지만 이 함수를 사용할 때 에러가 발생하고, 디렉토리 포인터가 초기화되지 않습니다.

rewinddir 함수를 사용하는 코드는 다음과 같습니다.

c

#include 

#include 



int main() {

    DIR *dirp;

    struct dirent *entry;



    // 디렉토리 열기

    dirp = opendir(".");



    // 디렉토리 포인터 초기화

    rewinddir(dirp);



    // 디렉토리 내용 출력

    while ((entry = readdir(dirp)) != NULL) {

        printf("%sn", entry->d_name);

    }



    // 디렉토리 닫기

    closedir(dirp);



    return 0;

}



rewinddir 함수를 사용했을 때 에러가 발생하는 이유는 뭘까요? 그리고 디렉토리 포인터가 초기화되지 않아 발생하는 문제점을 해결하는 방법은 무엇입니까?

    댓글목록

    profile_image
    나우호스팅  17일 전



    rewinddir 함수를 사용할 때 발생하는 문제는, rewinddir 함수를 사용하기 전에 디렉토리 포인터가 NULL이 아닌지 확인하지 않아서 발생합니다.

    다음과 같이 디렉토리 포인터가 NULL이 아닌지 확인하여 문제를 해결할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        DIR *dirp;
    
        struct dirent *entry;
    
    
    
        // 디렉토리 열기
    
        dirp = opendir(".");
    
        if (dirp == NULL) {
    
            perror("opendir");
    
            return 1;
    
        }
    
    
    
        // 디렉토리 포인터 초기화
    
        rewinddir(dirp);
    
    
    
        // 디렉토리 내용 출력
    
        while ((entry = readdir(dirp)) != NULL) {
    
            printf("%sn", entry->d_name);
    
        }
    
    
    
        // 디렉토리 닫기
    
        closedir(dirp);
    
    
    
        return 0;
    
    }
    
    


    또한, rewinddir 함수를 사용할 때 디렉토리 포인터가 NULL이 아닌지 확인하고, 디렉토리 포인터가 NULL이면 에러 메시지를 출력하여 디렉토리 포인터가 초기화되지 않은 문제를 해결할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        DIR *dirp;
    
        struct dirent *entry;
    
    
    
        // 디렉토리 열기
    
        dirp = opendir(".");
    
        if (dirp == NULL) {
    
            perror("opendir");
    
            return 1;
    
        }
    
    
    
        // 디렉토리 포인터 초기화
    
        rewinddir(dirp);
    
    
    
        // 디렉토리 내용 출력
    
        while ((entry = readdir(dirp)) != NULL) {
    
            printf("%sn", entry->d_name);
    
        }
    
    
    
        // 디렉토리 닫기
    
        closedir(dirp);
    
    
    
        return 0;
    
    }
    
    


    이러한 방법으로 디렉토리 포인터가 초기화되지 않은 문제를 해결할 수 있습니다.

    2025-07-01 03:48

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

검색

게시물 검색