在windows下 怎么用c语言遍历文件夹?要用纯c的

希望能给出详细代码... 希望能给出 详细代码 展开
 我来答
tattackor
推荐于2016-09-15 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:885万
展开全部

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;
}
谢应宸
2013-07-30 · TA获得超过2640个赞
知道大有可为答主
回答量:2731
采纳率:66%
帮助的人:2136万
展开全部
#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");
}
追问
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"); 
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunlinyao1993
2013-07-30 · 超过59用户采纳过TA的回答
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:138万
展开全部
什么叫纯C?
用C语言遍历文件肯定需要用到函数,标准C下貌似没有这个函数,但是使用VC的函数库可能可以实现,如果实在不行可以用第三方函数库,,,还不行的话用system("command");引用dos命令可以遍历,
追问
就是windows下  用c语言写的
追答
http://tieba.baidu.com/p/261591546
这个我是在网上找的,不过我只会用
system("dir");
这个函数,就是system("");双引号中使用dos命令,如果第一个方法不行且你觉得第二种方法可用,就再追问吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e2dbec6
2013-07-30 · TA获得超过273个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:254万
追问
我想要windows下  用c语言写的
追答
windows api就是用C写的,你调用它的api就可以了。很多操作你必须要调用平台相应的api才能实现相应的功能(是C代码,你用C编译器试试,#include )
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mmxxjjhh
2013-07-30
知道答主
回答量:21
采纳率:0%
帮助的人:10万
展开全部
是在dos下写的吗
追问
不是 dos  使用c语言写的函数
追答
C 调 DIR 命令 

char cmd[] = "dir /ad /s /b";
system(cmd);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式