Вопрос

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