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 に答える