#include <stdio.h>
#include <io.h>
#include <string.h>
void listall(char *path)
{
_finddata_t fileDir;
long lfDir;
char apath[1024];
sprintf_s(apath, 1024, "%s\\*.*", path);
if ((lfDir = _findfirst(apath, &fileDir)) == -1l)
printf("No file is found\n");
else {
do {
if(fileDir.attrib == _A_SUBDIR && strcmp(fileDir.name, ".")!=0 && strcmp(fileDir.name, "..") != 0){
sprintf_s(apath, 1024, "%s%s\\", path, fileDir.name);
listall(apath);
}else if (strcmp(fileDir.name, ".") != 0 && strcmp(fileDir.name, "..") != 0) {
printf("%s%s\n", path, fileDir.name);
}
} while (_findnext(lfDir, &fileDir) == 0);
}
_findclose(lfDir);
}
int main()
{
char dir[] = "D:\\";
listall(dir);
getchar();
return 0;
}