C语言遍历文件夹问题

如何才能让程序遍历一个目录下的所有文件夹,并把这些文件夹中的文件名分别都输出?
举例:d盘中存着10个同学所写的代码,每个同学用一个文件夹代表,文件夹中可能还有文件夹,怎么才能将每个同学所写的代码文件名字分别输出?

参考:

#include <stdio.h>
#include <io.h>
int main (void)
{
  _finddata_t fileDir;


  long lfDir;


  if((lfDir = _findfirst(dir,&fileDir))==-1l)
    printf("No file is found\n");
  else{
    printf("file list:\n");
    do{
      printf("%s\n",fileDir.name);
    }while( _findnext( lfDir, &fileDir ) == 0 );
  }
  _findclose(lfDir);


  return 0;
}