C语言递归目录下所有文件
/*
描写:C语言递归目录下所有文件 无聊写的
作者:朱剑
创建日期:2005/04/20
*/
#include<Windows.h>
#include<stdio.h>
void Directory(char path[])
{
char subpath[_MAX_PATH];
char temp[_MAX_PATH];
WIN32_FIND_DATA lp;
char ss[_MAX_PATH];
strcpy(temp,path);
HANDLE h=FindFirstFile(temp,&lp);
temp[strlen(temp)-1]='\0';
do
{
if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(lp.cFileName,"..")!=0 && strcmp(lp.cFileName,".")!=0)
{
//subpath
sprintf(subpath,"%s%s\\*",temp,lp.cFileName);
Directory(subpath);
}
if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=FILE_ATTRIBUTE_DIRECTORY)
{
sprintf(ss,"%s%s",temp,lp.cFileName);
printf("%s\n",ss);
Sleep(100);
}
} while(FindNextFile(h,&lp));
FindClose(h);
}
void main()
{
Directory("f:\\*");
}
描写:C语言递归目录下所有文件 无聊写的
作者:朱剑
创建日期:2005/04/20
*/
#include<Windows.h>
#include<stdio.h>
void Directory(char path[])
{
char subpath[_MAX_PATH];
char temp[_MAX_PATH];
WIN32_FIND_DATA lp;
char ss[_MAX_PATH];
strcpy(temp,path);
HANDLE h=FindFirstFile(temp,&lp);
temp[strlen(temp)-1]='\0';
do
{
if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(lp.cFileName,"..")!=0 && strcmp(lp.cFileName,".")!=0)
{
//subpath
sprintf(subpath,"%s%s\\*",temp,lp.cFileName);
Directory(subpath);
}
if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=FILE_ATTRIBUTE_DIRECTORY)
{
sprintf(ss,"%s%s",temp,lp.cFileName);
printf("%s\n",ss);
Sleep(100);
}
} while(FindNextFile(h,&lp));
FindClose(h);
}
void main()
{
Directory("f:\\*");
}
下面代码是在非常无聊的时候再次增加的。
下面代码支持unicode 和 ascii两种编码方式,并且支持超深目录的遍历(大概1400层左右深的目录)。
#include <Windows.h>
#include <stdio.h>
#include <tchar.h>
//工程选择加UNICODE,_UNICODE 宏就是UNICODE
//为什么UNICODE,_UNICODE 呢,一个是为c库函数,一个是为winapi用的
//加_MBCS就是ASCII
void dir(TCHAR * path)
{
TCHAR * buff= (TCHAR *)malloc(200000);
//ZeroMemory(buff,0,_tclen(buff));
WIN32_FIND_DATA fd={0};
TCHAR * temp= (TCHAR *)malloc(200000);
_tcscpy(buff,path);
HANDLE h =FindFirstFile(buff,&fd);
buff[_tcslen(buff)-1]=TEXT('\0');
do
{
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && _tcscmp(fd.cFileName,TEXT(".."))!=0 && _tcscmp(fd.cFileName,TEXT(".")))
{
_stprintf(temp,TEXT("%s%s\\*"),buff,fd.cFileName);
dir(temp);
}
if((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=FILE_ATTRIBUTE_DIRECTORY)
{
_stprintf(temp,TEXT("%s%s"),buff,fd.cFileName);
_tprintf(TEXT("%s\n"),temp);
Sleep(100);
}
} while (FindNextFile(h,&fd));
FindClose(h);
free(temp);
free(buff);
}
void main()
{
#ifdef _UNICODE
dir(TEXT("\\\\?\\f:\\*"));
#else
dir(TEXT("f:\\*"));
#endif
}
#include <stdio.h>
#include <tchar.h>
//工程选择加UNICODE,_UNICODE 宏就是UNICODE
//为什么UNICODE,_UNICODE 呢,一个是为c库函数,一个是为winapi用的
//加_MBCS就是ASCII
void dir(TCHAR * path)
{
TCHAR * buff= (TCHAR *)malloc(200000);
//ZeroMemory(buff,0,_tclen(buff));
WIN32_FIND_DATA fd={0};
TCHAR * temp= (TCHAR *)malloc(200000);
_tcscpy(buff,path);
HANDLE h =FindFirstFile(buff,&fd);
buff[_tcslen(buff)-1]=TEXT('\0');
do
{
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && _tcscmp(fd.cFileName,TEXT(".."))!=0 && _tcscmp(fd.cFileName,TEXT(".")))
{
_stprintf(temp,TEXT("%s%s\\*"),buff,fd.cFileName);
dir(temp);
}
if((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=FILE_ATTRIBUTE_DIRECTORY)
{
_stprintf(temp,TEXT("%s%s"),buff,fd.cFileName);
_tprintf(TEXT("%s\n"),temp);
Sleep(100);
}
} while (FindNextFile(h,&fd));
FindClose(h);
free(temp);
free(buff);
}
void main()
{
#ifdef _UNICODE
dir(TEXT("\\\\?\\f:\\*"));
#else
dir(TEXT("f:\\*"));
#endif
}