0

我正在尝试获取一个文件列表,其中不包括“。”之类的目录。和 ”..”。我使用以下代码来做到这一点:

   DIR *dir;   
   struct dirent *ent;

   dir = opendir(currentDir);

   if (dir != NULL)   
   {
      while ((ent = readdir (dir)) != NULL) 
      {

         if (ent->d_name == "." || ent->d_name == "..")
         {
            continue;
         }
      }
   }

但它不起作用。

4

4 回答 4

3

您应该strcmp用来比较字符串。而不是这样:

if (ent->d_name == ".")

你需要这个:

if (strcmp(ent->d_name, ".") == 0)

您的代码直接比较指针,而不是比较字符串的内容。

有关更多信息,请参阅strcmp 文档

于 2012-04-13T09:47:30.577 回答
1

你需要用来strcmp做比较。

于 2012-04-13T09:47:37.223 回答
1

如果只需要读取文件(文件夹除外)

if (ent->d_type == DT_REG) // DT_REG stands for regular files
{
  printf ("%s\n", ent->d_name);
}

如果您需要读取文件夹名称

if (ent->d_type == DT_DIR) // DT_DIR stands for directory
{
  printf ("%s\n", ent->d_name);
}
于 2017-09-13T08:31:51.790 回答
0

string 不是原生的 c 数据类型,字符串表示为字符的集合。因此,比较字符串没有运算符,而是函数,strcmp()以获得更多信息。

于 2012-04-13T09:49:01.077 回答