Reputation: 389
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();
}
Upvotes: 0
Views: 118
Reputation: 8053
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
}
Upvotes: 1