Vin*_*d K 1 c directory file dirent.h opendir
该程序是打开一个目录,并显示文件的名称...即,如果有一个文件..应该说FILE .... else DIRECTORY ..但程序显示所有文件作为目录..
任何人都可以检查代码是否有任何错误.... 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");
}
Run Code Online (Sandbox Code Playgroud)
一个问题是目录也是一种文件,并且可以正常fopen()编辑.您希望调用lstat()每个文件以检查它是否是目录.像这样:
struct stat st;
lstat(dent->d_name, &st);
if(S_ISDIR(st.st_mode))
printf("\t DIRECTORY\n");
else
printf("\t FILE\n");
Run Code Online (Sandbox Code Playgroud)
但是此错误应导致所有条目显示为文件.您是否对此目录中的文件具有读取权限?通话errno结束后的价值是fopen()多少?