该程序是打开一个目录并显示文件名... 即如果有一个文件..它应该说文件....否则目录.. 但程序将所有文件显示为目录..
任何人都可以检查代码是否有任何错误....thnx
#include<stdio.h>
#include<dirent.h>
#define DIR_path "root/test"
main()
{
DIR *dir;
dir=opendir(DIR_PATH);
printf("THe files inside the directory :: \n");
struct dirent *dent;
if(dir!=NULL)
{
while((dent=readdir(dir)))
{
FILE *ptr;
printf(dent->d_name);
if(ptr=fopen(dent->d_name,"r"))
{
print("\tFILE\n");
fclose(ptr);
}
else
printf("\t DIRECTORY\n");
}
close(dir);
}
else
printf("ERROR OPENIN DIRECTORY");
}
最佳答案
一个问题是目录也是一种文件,可以正常fopen()
ed。您想对每个文件调用 lstat()
来检查它是否是一个目录。像这样:
struct stat st;
lstat(dent->d_name, &st);
if(S_ISDIR(st.st_mode))
printf("\t DIRECTORY\n");
else
printf("\t FILE\n");
但是这个错误应该会导致所有条目都显示为文件。您对该目录中的文件有读取权限吗? fopen()
调用后 errno
的值是多少?
关于c - 在 C 中访问目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536781/