我想列出一个文件夹,但是当我想打印文件名时,只有打印
void liste_folder(void)
{
DIR *dir;
struct dirent *test;
dir = opendir(".");
while (readdir(dir) != NULL)
{
test = malloc(sizeof(*test));
printf("%sn", test->d_name);
free(test);
}
}
int main()
{
liste_folder();
}
您正在为test
分配内存,但这不会用目录信息填充它。 readdir
为您分配dirent
结构的内存,因此甚至没有必要。将 readdir
的返回值分配给test
:
while((test = readdir(dir)) != NULL){
printf("%sn", test->d_name);
// the man page says you may not free the dirent
}