用readdir列出的问题

时间:2013-10-16 12:56:24

标签: c readdir opendir

我想列出一个文件夹,但是当我想打印文件名时,只有\ n是打印

void    liste_folder(void)
{
  DIR           *dir;
  struct dirent *test;

  dir = opendir(".");
  while (readdir(dir) != NULL)
    {
      test = malloc(sizeof(*test));
      printf("%s\n", test->d_name);
      free(test);
    }
}

int     main()
{
  liste_folder();
}

1 个答案:

答案 0 :(得分:1)

您正在为test分配内存,但这并没有填充目录信息。 readdir为您分配dirent结构的内存,因此甚至不需要。将readdir的返回值分配给test代替:

while((test = readdir(dir)) != NULL){
    printf("%s\n", test->d_name);
    // the man page says you may not free the dirent
}