1.时间族函数
a)time()函数
time()函数返回值的数据类型是time_t(__time64_t)。传递给time()函数的参数是指向time_t数据类型的指针
用处:返回一个值,即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒。
#include <stdio.h>
#include <time.h>
int main()
{
time_t t1, t2; //分别声明两种使用方式的赋值对象
t1 = time(0); //第一种使用方式
time(&t2); //第二种使用方式
printf("t1=%ld\n", t1);
printf("t2=%ld", t2);
//打印出来的将是<span style="color:#333333;">1970年1月1日00:00:00到现在的时间,共1610442310秒</span>
return 0;
}
b)localtime()函数
localtime函数原型:struct tm *localtime(const time_t *timer)
返回值:返回指向tm 结构体的指针.tm结构体是time.h中定义的用于分别存储时间的各个量(年月日等)的结构体.
该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。下面是 tm 结构的细节:struct time1
{
int tm_sec; // 秒,范围从 0 到 59
int tm_min; // 分,范围从 0 到 59
int tm_hour; // 小时,范围从 0 到 23
int tm_mday; // 一月中的第几天,范围从 1 到 31
int tm_mon; // 月份,范围从 0 到 11
int tm_year; // 自 1900 起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6
int tm_yday; // 一年中的第几天,范围从 0 到 365
int tm_isdst; // 夏令时
};
用处:localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
int main()
{
time_t t;
time(&t);
tm*t1=localtime(&t);//月份+1是因为范围是0-11
printf("%d.%d.%d(星期%d)", t1->tm_year + 1900, t1->tm_mon + 1, t1->tm_mday,t1->tm_wday);
return 0; //year+1900是因为他是当前的年数减去1900,如果要显示的正常就要+1900
}
.
因为星期几范围是0-6,如果是星期日的话他就是0,可以用指针数组来解决这个问题
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
int main()
{
time_t t;
time(&t);
tm*t1=localtime(&t);
char* p[] = { "日","一","二","三","四","五","六"};//
printf("%d.%d.%d(星期%s)", t1->tm_year + 1900, t1->tm_mon + 1, t1->tm_mday,p[t1->tm_wday]);
return 0;
}
.
c)mktime()函数
作用是,将时间转换为自1970年1月1日以来持续时间的秒数,发生错误时返回-1。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
int main()
{
tm p = { 0,24,18,12,1-1,2021-1900 };//将2021.1.12 18点24分0秒转换为秒
time_t t =mktime(&p); //1970年1月1日00:00:00到数入的时间,之间的时间转换为秒
printf("%d秒", t);
return 0;
}
.
2.查找文件想关函数
本次函数用到#include <io.h>
a)_findfirst()函数和_findnext()函数和_findclose()函数
①_findfirst函数原型:long _findfirst(const char *, struct _finddata_t *)
第一个参数为文件名,可以用"*.*"来查找所有文件,也可以用"*.cpp"来查找.cpp文件
第二个参数是_finddata_t结构体指针。若查找成功,返回文件句柄,若失败,返回-1。
_findfirst 函数返回的是匹配到文件的句柄,数据类型为long
作用:搜索与指定的文件名称匹配的第一个实例
②_findnext函数原型:int _findnext(long, struct _finddata_t *);
第一个参数为文件句柄,第二个参数同样为_finddata_t结构体指针。若查找成功,返回0,失败返回-1L。
作用:搜索与_findfrist函数提供的文件名称匹配的下一个实例,若成功则返回0,否则返回-1L
③_findclose()函数原型:int _findclose(long);
只有一个参数,文件句柄。若关闭成功返回0,失败返回-1L。
作用:用于释放由FindFirst分配的内存
④_finddata_t结构体详细
struct _finddata32_t
{
unsigned attrib;
__time32_t time_create;
__time32_t time_access;
__time32_t time_write;
_fsize_t size;
char name[260];
};
unsigned attrib:文件属性的存储位置
_A_ARCH 0x20(存档)、 _A_HIDDEN 0x02(隐藏)
_A_NORMAL 0x00(正常)、_A_RDONLY 0x01(只读)
_A_SUBDIR 0x10(文件夹)、_A_SYSTEM 0x04(系统)
__time32_t time_create:存储文件创建时间
__time32_t time_access:文件最后一次被访问的时间。
__time32_t time_write:文件最后一次被修改的时间。
_fsize_t size:文件的大小(字节数表示)。
char name[260]:文件名称
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <io.h>
int main()
{
_finddata_t file; //定义一个结构体对象
long handle = _findfirst("C:\\*.*", &file);//定义一个句柄handle,将_findfirst查找的结果赋值给他
if (handle == -1L) //
{
printf( "查找失败" );
}
else
{
do
{
if (!(file.attrib & _A_HIDDEN))//显示非隐藏文件,将!取下就是显示隐藏文件
printf("%s,%d\n", file.name, file.size);//打印文件的名称,大小
} while (_findnext(handle, &file) == 0);//判断下一个匹配的实列,成功返回1,失败返回0
}
_findclose(handle); //关闭句柄
return 0;
}
.
⑤磁盘扫描(递归)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <io.h>
#include<string.h>
void dg(char* sm, char* ss)
{
_finddata_t file;
char s[256];
strcpy(s, sm);//将输入的复制给s
strcat(s, "\\*.*");//在合并,比如输入的是c:合并后是c:\\*.*
long handle = _findfirst(s, &file);//搜索c盘下所有的内容
if (handle == -1L)
{
printf("查找失败");
return;
}
do
{
if ((strcmp(file.name, ss) == 0))//判断搜索的文件名称是否与输入的名称一样
{
puts(s);//打印路径
printf("%s,%d\n", file.name, file.size);//则打印
return;
}
if (!(file.attrib & _A_HIDDEN))//如果不是隐藏文件
{
if ((file.attrib & _A_SUBDIR))//如果 file.attrib & _A_SUBDIR判断文件属性是文件夹
{
if (strcmp(file.name, ".") && strcmp(file.name, ".."))//每个文件的前俩个都是.和..为了方便直接判断
{
char r[256];
strcpy(r, sm);//将输入的c:给r
strcat(r, "\\");// C:\\合并
strcat(r, file.name);//在将搜索的第一个文件名称合并 c:\\Action!
dg(r, ss);//带入函数继续扫描
}
}
}
} while (_findnext(handle, &file) == 0);
_findclose(handle);
}
int main()
{
char c[256];
char b[256];
printf("请输入磁盘");
scanf("%s", &c);
printf("请输入名称");
scanf("%s", &b);
dg(c, b);
return 0;
}
.
这个失败应该是,没有权限打开某些文件,然后返回了-1L
还有很多地方没有完善
|