希望能给出 详细代码
1、操作系统中有相关的API函数,可以读取目录中所有的文件名字,以及时间属性信息,把这些信息读出来,直接依次遍历即可。
2、例程:
#include"stdio.h"#include"io.h"
int main()
{
struct _finddata_t files;
int File_Handle;
int i=0;
File_Handle = _findfirst("c:/temp/*.txt",&files);
if(File_Handle==-1)
{
printf("error\n");
return 0;
}
do
{
printf("%s \n",files.name);
i++;
}while(0==_findnext(File_Handle,&files));
_findclose(File_Handle);
printf("Find %d files\n",i);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-07-30
#include "stdio.h"
#include "windows.h"
void find(char * lpPath)
{
char szFind[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
printf("%s\n",FindFileData.cFileName);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
}
void main()
{
char filepath[MAX_PATH]="G:\\novel"; //可自己输入文件夹绝对路径
find(filepath);
system("PAUSE");
}追问
#include <windows.h>
void find(char * lpPath)
{
char szFind[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
hFind = FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
printf("%s\n",FindFileData.cFileName);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
}
void main()
{
char filepath[MAX_PATH]="G:\\novel"; //可自己输入文件夹绝对路径
find(filepath);
system("PAUSE");
}本回答被网友采纳
#include "windows.h"
void find(char * lpPath)
{
char szFind[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
printf("%s\n",FindFileData.cFileName);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
}
void main()
{
char filepath[MAX_PATH]="G:\\novel"; //可自己输入文件夹绝对路径
find(filepath);
system("PAUSE");
}追问
error C2146: syntax error : missing ';' before identifier 'hFind'
error C2065: 'hFind' : undeclared identifier
error C2065: 'hFind' : undeclared identifier
我用vc2008 编译的 这个怎么解决啊,我把它写成的名字是 copy.c进行编译的
c的话改成这样
#include <stdio.h>#include <windows.h>
void find(char * lpPath)
{
char szFind[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
hFind = FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
printf("%s\n",FindFileData.cFileName);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
}
void main()
{
char filepath[MAX_PATH]="G:\\novel"; //可自己输入文件夹绝对路径
find(filepath);
system("PAUSE");
}本回答被网友采纳
第2个回答 2013-07-30
什么叫纯C?
用C语言遍历文件肯定需要用到函数,标准C下貌似没有这个函数,但是使用VC的函数库可能可以实现,如果实在不行可以用第三方函数库,,,还不行的话用system("command");引用dos命令可以遍历,追问
用C语言遍历文件肯定需要用到函数,标准C下貌似没有这个函数,但是使用VC的函数库可能可以实现,如果实在不行可以用第三方函数库,,,还不行的话用system("command");引用dos命令可以遍历,追问
就是windows下 用c语言写的
追答
这个我是在网上找的,不过我只会用
system("dir");
这个函数,就是system("");双引号中使用dos命令,如果第一个方法不行且你觉得第二种方法可用,就再追问吧
第3个回答 2013-07-30
追问
我想要windows下 用c语言写的
追答windows api就是用C写的,你调用它的api就可以了。很多操作你必须要调用平台相应的api才能实现相应的功能(是C代码,你用C编译器试试,#include )
本回答被提问者采纳第4个回答 2013-07-30
是在dos下写的吗追问
不是 dos 使用c语言写的函数
追答C 调 DIR 命令
char cmd[] = "dir /ad /s /b";
system(cmd);