#include <windows.h> #include <stdio.h> FILE *p; int i, iSuoJin = 0; void MuLu(char *pc) { fprintf(p, "目录%s下的文件/n", pc); HANDLE hFile; // windows对文件的操作首先要得到一个文件句柄 FILETIME ft; // 没有使用 WIN32_FIND_DATAA wfd; // WIN32_FIND_DATAA 是windows定义的查找文件的结构 char sz[256]; strcpy(sz, pc); strcat(sz, "//*.*"); hFile = FindFirstFile(sz, &wfd); // FindFirstFile函数查找一个文件,sz是要查找的文件名,可以是全路径或相对路径,也可以写通配符,如“c:/*.*” if (hFile != INVALID_HANDLE_VALUE) { while (FindNextFile(hFile, &wfd)) { // 利用第一次找到的文件句柄,继续寻找下个文件,如果找到下个文件,则函数填充wfd结构,并返回true if (wfd.cFileName[0] == '.')continue; for (i = 0; i < iSuoJin; i++)fprintf(p, "."); if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // 判断,得出找到的文件名是否是一个文件夹,如果是,则递归调用查找函数,由此实现深度全文件夹搜索 iSuoJin += 2; strcpy(sz, pc); strcat(sz, "//"); strcat(sz, wfd.cFileName); MuLu(sz); // 低谷递归查找 } else fprintf(p, "%s,%u字节/n", wfd.cFileName, wfd.nFileSizeLow); } } if (iSuoJin > 0)iSuoJin -= 2; } int main(int argc, char* argv[]) { p = fopen("asd.txt", "w"); int j; char szmulu[12] = "c:"; // "c:" 设定默认盘符, for (j = 'J'; j < 'K'; j++) { szmulu[0] = j; // 赋值盘符 MuLu(szmulu); // 搜索盘符 } fclose(p); return 0; }