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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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;

参考技术A #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"); 

参考技术B 什么叫纯C?
用C语言遍历文件肯定需要用到函数,标准C下貌似没有这个函数,但是使用VC的函数库可能可以实现,如果实在不行可以用第三方函数库,,,还不行的话用system("command");引用dos命令可以遍历,追问

就是windows下 用c语言写的

追答

http://tieba.baidu.com/p/261591546
这个我是在网上找的,不过我只会用
system("dir");
这个函数,就是system("");双引号中使用dos命令,如果第一个方法不行且你觉得第二种方法可用,就再追问吧

参考技术C http://my.csdn.net/qxbailv15/code/detail/48451追问

我想要windows下 用c语言写的

追答

windows api就是用C写的,你调用它的api就可以了。很多操作你必须要调用平台相应的api才能实现相应的功能(是C代码,你用C编译器试试,#include )

本回答被提问者采纳
参考技术D 是在dos下写的吗追问

不是 dos 使用c语言写的函数

追答

C 调 DIR 命令

char cmd[] = "dir /ad /s /b";
system(cmd);

windows下怎么用C语言读取串口里的数据?

买了个gps模块接在USB口上 插在电脑上 怎么用c语言把串口里的数据读出来保存到文件中

参考技术A Windows下的语言读取串口的数据,可以通过USB的一些特定连接。 参考技术B Windows下的语言读取串口的数据,可以通过USB的一些特定连接。

以上是关于在windows下 怎么用c语言遍历文件夹?要用纯c的的主要内容,如果未能解决你的问题,请参考以下文章

linux下怎么用纯c语言连接mongodb数据库进行读写操作

怎么用C语言编程遍历文件夹下所有文件名

能否给我一个用纯C编写的UDP发送和接收的程序

用纯C语言 怎样编程,解析HTTP协议。

windows下怎么用C语言读取串口里的数据?

用纯C代码编写一个简单的HTTP客户端向服务器请求数据