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是一個常量宏,它在<stdlib.h>頭文件中被定義,表示的是文件名的最大長度;

如何將電腦磁盤的信息去讀到這個結構體內,需要用到下面三個函數:

_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)種方式來初始化字符串數組。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章