【发布时间】:2021-02-18 09:38:45
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
#define ERR(source) (perror(source),\
fprintf(stderr, "%s:%d\n", __FILE__, __LINE__),\
exit(EXIT_FAILURE))
void scan_dir() {
DIR* dirp;
struct dirent *dp;
struct stat filestat;
if (NULL == (dirp = opendir("."))) ERR("opendir");
do {
errno = 0;
if ((dp = readdir(dirp)) != NULL) {
if (lstat(dp->d_name, &filestat)) ERR("lstat");
printf("%s\n", dp->d_name);
}
}
while (dp != NULL);
}
我了解这里的大部分代码,但我无法弄清楚 dp 每次如何更改/迭代。我以为可能是dp = readdir(dirp),就是每次都把dp的值赋值给另一个目录入口,但是我不确定,如果是,它是如何自动赋值给下一个的?
【问题讨论】:
标签: c linux while-loop posix