c - 在 C 中访问目录

标签 c file directory opendir dirent.h

该程序是打开一个目录并显示文件名... 即如果有一个文件..它应该说文件....否则目录.. 但程序将所有文件显示为目录..

任何人都可以检查代码是否有任何错误....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/

相关文章:

c# - 从文件中删除第一行

javascript - 根据父文件夹在文件夹中搜索特定文件类型

delphi - 如何在 Delphi 中重新组织我的单元的文件夹结构?

c - 为什么这个更快?提交 1 与提交 2

c - 数据请求仅返回地址值(I2C)

从一段单词创建哈希表和节点

c# - FTPClient如何删除目录?

c - 我是否要转换 malloc 的结果?

PHP:ftp_rawlist 始终返回 false,即使在被动模式下也是如此

C:从文件输入排序,收到大量编译错误