33 lines
940 B
C
33 lines
940 B
C
|
/*
|
|||
|
编写一个程序,使用opendir系统调用打开一个已存在的目录,并使用readdir系统调用遍历目录中的文件和子目录,并将它们的名称打印到控制台上。
|
|||
|
*/
|
|||
|
#include <stdio.h>
|
|||
|
#include <sys/types.h>
|
|||
|
#include <dirent.h>
|
|||
|
#include <string.h>
|
|||
|
|
|||
|
int main(int argc, char const *argv[])
|
|||
|
{
|
|||
|
DIR *dir = opendir("/home/flykhan/qfedu-linux-advanced-level");
|
|||
|
if (NULL == dir)
|
|||
|
{
|
|||
|
perror("opendir"); // 打开目录失败时输出错误信息
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
struct dirent *dirent;
|
|||
|
while ((dirent = readdir(dir)) != NULL)
|
|||
|
{
|
|||
|
if (strcmp(dirent->d_name, ".") != 0 && strcmp(dirent->d_name, "..") != 0)
|
|||
|
{
|
|||
|
if (dirent->d_type == DT_DIR || dirent->d_type == DT_REG)
|
|||
|
{
|
|||
|
printf("%s\n", dirent->d_name); // 打印目录中的文件和子目录名
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
closedir(dir); // 关闭目录
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|