I want to list a folder but when I want to print the filename only \n are print

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();
}
有帮助吗?

解决方案

You're allocating memory for test, but that doesn't fill it with the directory info. readdir allocates the memory for the dirent structure for you, so it isn't even necessary. Assign the return-value of readdir to test instead:

while((test = readdir(dir)) != NULL){
    printf("%s\n", test->d_name);
    // the man page says you may not free the dirent
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top