微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这种while循环如何迭代?

如何解决这种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。readdirDIR*作为参数,而DIR*具有一个确定要读取哪个文件的内部状态。每次您在其上调用readdir时,它将返回下一个文件。请参阅文档here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。