如何解决这种while循环如何迭代?
#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中,=
是一个运算符,与其他所有运算符一样。 a = b
将变量a
设置为值b
,然后返回值b
。因此,y = (x = 1) + 2
将x设置为1,然后将1加2,然后将y设置为3。readdir
以DIR*
作为参数,而DIR*
具有一个确定要读取哪个文件的内部状态。每次您在其上调用readdir
时,它将返回下一个文件。请参阅文档here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。