int main(int argc, char *argv[])
{
DIR *pdir;//目录流指针
struct dirent *ptr; //指向目录结构(目录结构体指针)
//要有两个参数才行
if(argc != 2)
{
printf("参数不正确!\n");
exit(1);
}
if((pdir = opendir(argv[1])) == NULL)
{
printf("不能打开目录: %s\n", argv[1]);
exit(1);
}
while((ptr = readdir(pdir)) != NULL) //读到目录尾或出错返回NULL
{
printf("文件名: %s\n", ptr->d_name);//struct dirent结构参考字典p366
}
return 0;
}
关于 struct dirent结构体原型为:
struct dirent
{
ino_t d_ino; //目录进入点的inode
off_t d_off; //目录开头到这个进入点的位移
unsigned short int d_reclen; //d_name的长度, 不包含NULL
unsigned char d_type; //d_name文件类型
char d_name[256]; //目录中的文件名
};

本文详细介绍了如何使用C语言通过命令行参数接收目录路径,并利用`opendir`, `readdir`函数遍历该目录,打印出所有文件名的过程。通过代码实例展示了操作目录的基本步骤,包括打开目录、读取目录项和关闭目录,适用于初学者了解目录遍历的基础知识。
1447

被折叠的 条评论
为什么被折叠?



