0

我想列出一个文件夹,但是当我想打印文件名时,只打印 \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();
}
4

1 回答 1

1

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

while((test = readdir(dir)) != NULL){
    printf("%s\n", test->d_name);
    // the man page says you may not free the dirent
}
于 2013-10-16T13:25:05.297 回答