格式化时间文本写入
**设计程序,获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建。**
/**
* file name:format_time_text_writing.c
* author : liaojx2016@126.com
* date : 2024-05-08
* function : Writing format time to text every second interval
* note : None
* CopyRight (c) 2024 liaojx2016@126.com Right Reseverd
*
**/
#include<stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
/**
*
* func name : NUm2Chinese
* function : Transform number to chinese
* parameter :
* @num :Arabic number
* @str :Address pointed to string stored chinese
* Return val : Chinese string
* note : None
* author : liaojx2016@126.com
* date : 2024-05-08
* version : V1.0
* modify history : None
*
**/
char* NUm2Chinese(int num,char *str)
{
switch (num)
{
case 1: str="一"; break;
case 2: str="二"; break;
case 3: str="三"; break;
case 4: str="四"; break;
case 5: str="五"; break;
case 6: str="六"; break;
case 0: str="天"; break;
}
return str;
}
int main(int argc, char const *argv[])
{
//定义一个time_t数据类型的指针作为函数localtime()的形参用来接收时间
time_t ptime;
//定义一个结构体指针接受函数localtime()的返回值
struct tm *ptm;
//定义一个log.txt文件的文件指针
FILE *pf=fopen("log.txt","w+b");
FILE *pftemp=fopen("logtemp.txt","w+b");
if (NULL==pf)
{
perror("fopen file fail\n");
exit(1);
}
int i=10; //计算循环时间次数
char buftime[50]; //存放格式化的时间字符串
while(i--)
{
//获取当前时间戳
time(&ptime);
//把时间戳转化为可读的时间,获取tm结构体的成员信息
ptm=localtime(&ptime);
//写入文件方法一
//用strftime函数函数把格式化的时间写入字符串buftime
strftime(buftime,50,"时间: %Y年%m月%d日 星期%w %X\n",ptm);
//把格式化的字符串写入文本log.txt中
fwrite(buftime,strlen(buftime),1,pf);
//写入文件方法二
//用fprintf函数函数格式化输出写入文本logtemp.txt
char *str; //存放星期数的中文数字
fprintf(pftemp,"%d年%02d月%02d日 星期%s %02d:%02d:%02d\n",
ptm->tm_year+1900,
ptm->tm_mon+1,
ptm->tm_mday,
NUm2Chinese(ptm->tm_wday,str),
ptm->tm_hour,
ptm->tm_min,
ptm->tm_sec );
//printf("%s\n",buftime);
//清空数组
bzero(buftime,50);
//刷新缓冲区,实时输入文本
fflush(pf);
fflush(pftemp);
//延时一秒
sleep(1);
}
//关闭文件
fclose(pf);
fclose(pftemp);
return 0;
}
运行结果:
写入方法一:利用函数strftime()保存格式化的时间,再利用函数 fwrite()写入文本
log.txt文本结构
时间: 2024年05月09日 星期4 10:11:44
时间: 2024年05月09日 星期4 10:11:45
时间: 2024年05月09日 星期4 10:11:46
时间: 2024年05月09日 星期4 10:11:47
时间: 2024年05月09日 星期4 10:11:48
时间: 2024年05月09日 星期4 10:11:49
时间: 2024年05月09日 星期4 10:11:50
时间: 2024年05月09日 星期4 10:11:51
时间: 2024年05月09日 星期4 10:11:52
时间: 2024年05月09日 星期4 10:11:53
写入方法二:利用函数fprintf()格式化输出到文本
logtemp.txt文本结构
2024年05月09日 星期四 10:11:44
2024年05月09日 星期四 10:11:45
2024年05月09日 星期四 10:11:46
2024年05月09日 星期四 10:11:47
2024年05月09日 星期四 10:11:48
2024年05月09日 星期四 10:11:49
2024年05月09日 星期四 10:11:50
2024年05月09日 星期四 10:11:51
2024年05月09日 星期四 10:11:52
2024年05月09日 星期四 10:11:53