我希望我的程序获取一个目录,然后打印该目录的内容并说明每个项目是否是一个目录。如果我给它一个包含文件 F1.txt 和 F2.txt 以及文件夹 D1、D2 和 D3 的目录,它应该打印:
F1.txt 不是目录
F2.txt 不是目录
D1 是目录
D2 是目录
D3 是目录
char* curr[100];
DIR* dirp = opendir(name);
struct dirent* x;
struct stat fstat;
//go to each file til readdir gives NULL
while((x = readdir(dirp)) != NULL) {
//store name of file
curr[0] = (x -> d_name);
//ignore files starting with "."
if(*curr[0] == '.')
continue;
//set status
stat(curr[0], &fstat);
//print file name
printf("%s", *curr);
//check if it's a directory and print result
if(S_ISDIR(fstat.st_mode))
printf(" is directory\n");
else
printf(" is not directory\n");
}
这打印说所有文件都不是目录。如果我删除忽略以“.”开头的文件的部分,它会说 F1.txt、F2.txt 和 D1 不是目录,而 .、D2、D3 和 .. 是目录(按此顺序)。这让我认为问题在于 stat 调用而不是我对宏的使用,但我在这里很困惑,所以我不知道。