要求:绝对路径名做输入参数,打印输出该路径下所有文件名
知识点:
打开目录函数:DIR* opendir (const char * path )
读取目录函数:struct dirent *readdir(DIR *dir)
返回下一个目录项的指针。
#include<sys/types.h>
#include<dirent.h>
dirent结构体定义如下:
struct dirent
{
ino_t d_ino;
off_t d_off;
unsigned short d_reclen;
unsigned char d_type;
char d_name[256];
};
示例
DIR *dirptr = opendir(“pathname”);
struct dirent *entry;
while (entry = readdir(dirptr))
{
printf("%s\n", entry->d_name);
}
代码:
#include<stdio.h>
#include<stdlib.h>
#include<sys/stat.h>
#include<unistd.h>
#include<errno.h>
#include<dirent.h>
#include<sys/types.h>
int main(int argc,char*argv[])
{
struct stat buf;
DIR* dir;
struct dirent *dirent;
int res;
if(argc!=2)
{
printf("参数不正确!正确格式:./main filepath\n");
exit(1);
}
stat(argv[1],&buf);
res=buf.st_mode&S_IFDIR;
if(res==S_IFDIR)
{
printf("%s为目录\n",argv[1]);
}
else
{
printf("%s不是目录\n",argv[1]);
exit(1);
}
dir=opendir(argv[1]);
printf("%s目录下的文件:\n",argv[1]);
while(dirent=readdir(dir))
{
if((strcmp(dirent->d_name, ".") == 0) || (strcmp(dirent->d_name, "..") == 0))
{
continue;
}
printf("%s\n",dirent->d_name);
}
closedir(dir);
return 0 ;
}