访问C中的目录

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)

sla*_*ker 9

一个问题是目录也是一种文件,并且可以正常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()多少?