第一章 列出一个目录中所有文件 程序清单1-1

1.  apue.h 在书后的附录中找到输入。

2. gcc时报错, err_sys, err_quit, 补充函数, 加printf。 err_quit里还要加 exit(0).

3. gcc 得到 a.out。

4. 执行 ./a.out 报错, Segmentation fault (core dumped)。

5. 添加参数, 执行 ./a.out .      , 打印当前目录下文件, 成功打印。

   注: gcc -o 选项, 控制输出的文件名。 如本例中,  gcc 1-1_ls.c -o ls则输出ls可执行文件。

    int argc 命令参数个数。 至少为1, argv[0]是执行命令本身, 即为 ./ls, 若不加 ., 则 argv[1] 为 null

    则函数在 opendir(argv[1])会因为非法指针, 导致段错误。

重点

    DIR *dp;

    struct dirent *dirp;

    (dp = opendir(argv[1])) != NULL;                                     //opendir()返回的是DIR的指针。

    while ( (dirp = readdir(dp)) != NULL)                                //readdir()返回的是dirent指针。

    {

        printf("%s ", dirp->d_name);                                    //打印d_name.

    }

    closedir(dp);                                                                  //closedir()与opendir()相对应。

原文地址:https://www.cnblogs.com/gavinwu/p/3333322.html