格式化时间文本写入

**设计程序,获取当前系统时间,把时间转换为特定格式”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

posted @ 2024-05-09 10:29  沉舟道人  阅读(13)  评论(0编辑  收藏  举报