列出C上目录中的文件

时间:2016-02-02 05:23:39

标签: c linux

我开始学习c,我需要一些帮助来理解这段代码:

#include "apue.h"
#include <dirent.h>
int main(int argc, char *argv[])

{
        DIR             *dp;
        struct dirent   *dirp;

        if (argc != 2)
                err_quit("usage: ls directory_name");

        if ((dp = opendir(argv[1])) == NULL)
                err_sys("can't open %s", argv[1]);
        while ((dirp = readdir(dp)) != NULL)
                printf("%s\n", dirp->d_name);

        closedir(dp);
        exit(0);
}

所以,我知道第一个if会告诉你你错过了你想要列出文件的目录,但我完全迷失了下一个if和while,我知道会打印出来文件,但我不明白时间的条件,任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

  • 如果条件将打开您要从中读取文件的主目录。如果无法打开它,它将返回NULL。
  • 其次,条件将逐个读取给定目录中的文件并打印文件名。
  • readdir将读取第一个文件格式目录,如果读取文件失败则返回NULL。
  • 因此,在条件readdir成功读取文件的情况下,它将不会返回NULL。所以现在条件变为while(dirp != NULL)