C++对根据时间对txt文件进行命名,并进行读写,分别运用FILE和fstrem进行输出
根据时间对txt文件进行命名
首先要简单介绍一下与时间有关的变量类型time_t,是以秒作为单位的时间,再引入time()函数,其函数原型为:
//函数原型: time_t time(time_t *timer)
//参数说明: timer=NULL时得到当前日历时间(从1970-01-01 00:00:00到现在的秒数),
timer=时间数值时,用于设置日历时间;time_t是一个unsigned long long类型。如果 timer不为空,则返回值也存储在变量 timer中。
//函数功能: 得到当前日历时间或者设置日历时间
//函数返回: 当前日历时间
从而得到当前日历的秒数
time_t nowtime = time(NULL);
再根据tm结构类型,其定义为
struct tm
{
int tm_sec; // seconds after the minute - [0, 60] including leap second
int tm_min; // minutes after the hour - [0, 59]
int tm_hour; // hours since midnight - [0, 23]
int tm_mday; // day of the month - [1, 31]
int tm_mon; // months since January - [0, 11]
int tm_year; // years since 1900
int tm_wday; // days since Sunday - [0, 6]
int tm_yday; // days since January 1 - [0, 365]
int tm_isdst; // daylight savings time flag
};
根据localtime()函数可将上述nowtime转换为按照year-month-day-hour-min-sec的时间格式,但是有要注意年份是从1900年算起的,输出年份的时候要加上1900,月份从0开始的,要加1,就可以得到当前时间了
tm* p = localtime(&nowtime);
做好准备工作之后,我们就可以对txt文件进行命名了,先定义一个字符数组储存txt文件名称,再用for循环对txt文件的内容进行输出,运用了<windows.h>中的Sleep函数,Sleep(1000*n)代表程序挂起n秒
char filename[200] = { 0 };
for (int i = 0; i < 10; i++)
{
time_t nowtime = time(NULL);
tm* p = localtime(&nowtime);
Sleep(1000);//sleep for 1 seconds
sprintf(filename, "time/%d_%d_%d_%d_%d_%d.txt", p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
FILE* fp = fopen(filename, "w+");
fprintf(fp,"The function time() has lasted for %d seconds.", nowtime);
fclose(fp);
}
最后得到输出的文件,和cpp文件在一个文件夹,也可以在上面的sprintf中更改文件目录
最后发一个完整的代码
#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
int main()
{
char filename[200] = { 0 };
for (int i = 0; i < 10; i++)
{
time_t nowtime = time(NULL);
tm* p = localtime(&nowtime);
Sleep(1000);//sleep for 1 seconds
sprintf(filename, "time/%d_%d_%d_%d_%d_%d.txt", p->tm_year + 1900, p->tm_mon + 1,
p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec);
FILE* fp = fopen(filename, "w+");
fprintf(fp,"The function time() has lasted for %d seconds.", nowtime);
fclose(fp);
}
return 0;
}