码迷,mamicode.com
首页 > 其他好文 > 详细

使用C遍历文件夹

时间:2015-04-01 12:57:24      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

使用windows.h中的函数FindFirstFILE() 和FindNextFile()遍历文件夹中的函数。

 

函数说明:

1、FindFirstFile()   //#include<windows.h>

HANDLE WINAPI  FindFirstFile(   //返回值是句柄 HANDLE,这个值用于函数FindNextFile()
  _In_   LPCTSTR lpFileName,  //需要遍历的文件夹的路径名,此参数不能为空,不能为空字符串,
//最好使用通配符来限定查找的文件,例如“C:\\Jiahu\\*.jpg” _Out_  LPWIN32_FIND_DATA lpFindFileData //结构体lp..Data用于存储找到的文件的信息,
//其中lpFindFileData.cFileName存储文件的文件名(ANSIC) );

If the function succeeds, the return value is a search handle used in a subsequent call to FindNextFile orFindClose, and the lpFindFileData parameter contains information about the first file or directory found.

如果函数执行成功,则返回一个用于函数FindNextFile()或FindClose()的句柄。参数 lpFindFileData 用于存储查找到的第一个文件的信息。


If the function fails or fails to locate files from the search string in the lpFileName parameter, the return value isINVALID_HANDLE_VALUE and the contents of lpFindFileData are indeterminate. 

如果函数执行失败,其返回值为 INVALID_HANDLE_VALUE ,而且参数lpFindFileData 中的数据无效。

 

2、FindNextFile() //#include<windows.h> 

BOOL WINAPI FindNextFile( //找到下一个函数返回TRUE否则返货FALSE
  _In_   HANDLE  hFindFile,  //FindFirstFile()执行成功所返回的句柄
  _Out_  LPWIN32_FIND_DATA lpFindFileData //用于存储找到的文件的信息,可以与FindFirstFile()公用同一个参数。
);

If the function succeeds, the return value is nonzero and the lpFindFileData parameter contains information about the next file or directory found.

如果函数执行成功,返回非零并且参数lpFindFileData 存储了文件的信息。

If the function fails, the return value is zero and the contents of lpFindFileData are indeterminate. 

如果函数执行失败,其返回值是0并且参数lpFindFileData 无效。

 

下面的函数是我用于将整个文件夹下的jpg文件进行更名,将文件的名称统一命名,最后文件的名称像:blue_0.jpg  blue_1.jpg  blue_2.jpg .....blue_99.jpg...

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

void ReName(char *file_name , char *dir_path);//用于更改整个文件夹下文件的名称,file_name为文件名的前缀。像 blue...

int main()
{
printf("Enter prefix :");
char prefix[9];
scanf("%s" , prefix);
ReName(prefix , ".");//点 “.”  表示当前目录下
return 0;
}

void ReName(char *File_name ,char *Dir_path)
{
WIN32_FIND_DATA dir;  //定义dir用于存储找到的文件的信息。用于函数FindFirstFile()和FindNextFile()

HANDLE h = FindFirstFile(Dir_path , &dir) ;
if(h == INVALID_HANDLE_VALUE)      //若句柄h无效效
{
printf("can‘t open this file or dir :%s\n press any key to exit!" , Dir_path);
getchar();
exit(0);
}
else        //句柄h有效
{
char new_name[21];                  //文件的新名称
strcpy(new_name , File_name);//所有的文件使用相同的前缀 file_name
strcat(new_name , "0.jpg");     //第一个文件明明为file_name0.jpg
int i =0;                                   //为余下的文件计数
char Cnt[6];                                          
rename(dir.cFileName , new_name);//更改第一个找到的文件名
while(FindNextFile(h , &dir))//更改余下的文件的名称
{
i++;                                        //文件计数
itoa(i , Cnt ,10);                       //int转字符串 
strcpy(new_name , File_name);//下面3句生成新文件名
strcat(new_name , Cnt);
strcat(new_name , ".jpg");
rename(dir.cFileName , new_name);//文件更名
}
}
}

 

使用C遍历文件夹

标签:

原文地址:http://www.cnblogs.com/jiahu-Blog/p/4383263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!