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

希望能给出 详细代码

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");
}

追问

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命令可以遍历,追问

就是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);

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网