#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;
}