
rewinddir 함수를 호출한 후 opendir 함수를 호출하면 디렉토리 열기 함수인 opendir 함수가 실패하는 이유는 다음과 같습니다.
- rewinddir 함수는 디렉토리 열기 후에 사용하여 디렉토리 포인터를 처음으로 되돌리게 해주는 함수입니다. 하지만, 디렉토리 열기 전에 rewinddir 함수를 호출하면 디렉토리 열기 함수인 opendir 함수가 실패하는 이유는 opendir 함수가 디렉토리 열기를 수행하기 전에 디렉토리 포인터를 초기화해야 하는데, rewinddir 함수를 호출하면 디렉토리 포인터가 이미 초기화된 상태가 되어 opendir 함수가 실패하는 것입니다.
rewinddir 함수를 호출한 후 opendir 함수를 호출하면 디렉토리 열기 함수인 opendir 함수가 실패하는 것을 방지할 수 있는 방법은 다음과 같습니다.
- opendir 함수를 호출하기 전에 rewinddir 함수를 호출하지 말고, opendir 함수를 호출한 후 rewinddir 함수를 호출하는 방법을 사용하면 됩니다. 또는, opendir 함수를 호출하기 전에 rewinddir 함수를 호출한 후, opendir 함수를 호출하기 전에 rewinddir 함수를 호출한 디렉토리 포인터를 NULL로 초기화하는 방법을 사용하면 됩니다.
예를 들어, 다음과 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
c
#include
#include
#include
int main() {
DIR *dir;
// opendir 함수를 호출하기 전에 rewinddir 함수를 호출하지 말고, opendir 함수를 호출한 후 rewinddir 함수를 호출하는 방법을 사용
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
exit(1);
}
rewinddir(dir);
while ((ent = readdir(dir)) != NULL) {
printf("%sn", ent->d_name);
}
closedir(dir);
return 0;
}
또는, 다음과 같은 코드를 사용할 수 있습니다.
#hostingforum.kr
c
#include
#include
#include
int main() {
DIR *dir;
// opendir 함수를 호출하기 전에 rewinddir 함수를 호출한 후, opendir 함수를 호출하기 전에 rewinddir 함수를 호출한 디렉토리 포인터를 NULL로 초기화하는 방법을 사용
rewinddir(".");
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
exit(1);
}
rewinddir(dir);
while ((ent = readdir(dir)) != NULL) {
printf("%sn", ent->d_name);
}
closedir(dir);
return 0;
}
2025-04-03 02:14