#include <iostream> #include <stdio.h> #include <stdlib.h> #include <windows.h> #define IDENT '-' #define IDENT_SIZE 1 using namespace std; void printIdent(int n) { for(int i = 0; i < n * IDENT_SIZE; i++) { cout<<IDENT; } } void listDirectory(char *dirName, int level) { HANDLE h; WIN32_FIND_DATA info; char fullPath[MAX_PATH] = { '\0' }; strcpy(fullPath, dirName); strcat(fullPath, "*.*"); if ((h = FindFirstFile(fullPath, &info)) != INVALID_HANDLE_VALUE) { do { if (!(strcmp(info.cFileName, ".") == 0 || strcmp(info.cFileName, "..") == 0)) { if(info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printIdent(level); cout<<info.cFileName<<endl; strcpy(fullPath, dirName); strcat(fullPath, info.cFileName); strcat(fullPath, "\\"); listDirectory(fullPath, level + 1); } } }while(FindNextFile(h, &info)); FindClose(h); } } void main() { char dir[MAX_PATH] = { "c:\\" }; listDirectory(dir, 0); getchar(); } |