C++文件查找——struct _finddata_t结构体

_finddata_t描述

 struct _finddata_t
        {
             unsigned attrib;
             time_t time_create;
             time_t time_access;
             time_t time_write;
             _fsize_t size;
             char name[_MAX_FNAME];
        };

这个结构体是用来存储文件各种信息的:
1、attrib:用于表示文件的属性,位表示,那么当一个文件有多个属性时,它往往是通过位或的方式,来得到几个属性的综合。_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、_A_SUBDIR(文件夹)、_A_SYSTEM(系统)
2、time_create:文件创建的时间;
3、time_access:最后一次被访问的时间;
4、time_write:最后一次被修改的时间;
5、size:文件大小,_fsize_t应该可以相当于unsigned整型,表示文件的字节数;
6、name[_MAX_FNAME]:文件的文件名。这里的_MAX_FNAME是一个常量宏,它在头文件中被定义,表示的是文件名的最大长度;

如何将电脑磁盘的信息去读到这个结构体内,需要用到下面三个函数:

_findfirst

long _findfirst( char *filespec, struct _finddata_t *fileinfo )

filespec:标明文件的字符串,可支持通配符。比如:*.c,则表示当前文件夹下的所有后缀为C的文件。
fileinfo :这里就是用来存放文件信息的结构体的指针。这个结构体必须在调用此函数前声明,不过不用初始化,只要分配了内存空间就可以了。函数成功后,函数会把找到的文件的信息放入这个结构体中。

返回值:如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。

_findnext

int _findnext( long handle, struct _finddata_t *fileinfo )

handle:即由_findfirst函数返回回来的句柄。
fileinfo:文件信息结构体的指针。找到文件后,函数将该文件信息放入此结构体中。

返回值:若成功返回0,否则返回-1。

_findclose

int _findclose( long handle )
handle :_findfirst函数返回回来的句柄
返回值:成功返回0,失败返回-1。

字符有关操作

  • strcat

char *strcat(char *s1,const char *s2);

函数strcat把s2指向的串(包括终止的空字符)的副本添加到s1指向的串的末尾。s2的第一个字符覆盖s1末尾的空字符。
函数strcat返回s1值

  • strcmp

int strcmp(const char *str1, const char *str2)

比较两个字符串的大小。
如果返回值小于 0,则表示 str1 小于 str2。
如果返回值大于 0,则表示 str1 大于 str2。
如果返回值等于 0,则表示 str1 等于 str2。

  • 字符数组初始化为空

1、 char a[20] = {0};
2、 char a[20] = " ";
3、 char a[20] = {’\0’};
4、 char a[20]; a[0] = ‘\0’;

第(1)(2)(3)种方式是将str数组的所有元素都初始化为’\0’,而第(4)种方式是只将str数组的第一个元素初始化为’\0’。如果数组的size非常大,那么前两种方式将会造成很大的开销。所以,除非必要(即我们需要将str数组的所有元素都初始化为0的情况),我们都应该选用第(4)种方式来初始化字符串数组。

你可能感兴趣的:(C++)