V1.0 2024年5月9日 发布于博客园
实现:设计程序,获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建。
代码
/*** @file name : writing_date.c* @brief : 定时更新日志文件, 按ctrl + C结束程序* @author : RISE_AND_GRIND@163.com* @date : 2024/05/09* @version : 1.0* @note :设计程序,获取当前系统时间,把时间转换为特定格式”yy年mm月dd日 星期x tt:mm:ss”,* 并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建。* CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd*/
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <stdlib.h>int Print_Time(FILE *pfile);
int main(int argc, char const *argv[])
{// 打开文件FILE *logfile = fopen("log.txt", "a+b");if (NULL == logfile){printf("Failed to open file!\n");exit(-1);}// 写入文件for (int i = 1; 1; ++i){if (Print_Time(logfile) < 0){printf("Failed to write time information to the file!\n");exit(-1);}sleep(1);printf("The log file is updated %d times\n", i);}// 关闭文件fclose(logfile);return 0;
}/*** @name Print_Time* @brief 将系统时间写入到文件中* @param pfile 要写入的文件指针* @return* @retval 负数 写入失败* @retval 非负数 写入的字符总数* @date 2024/05/09* @version 1.0* @note*/
int Print_Time(FILE *pfile)
{// 存放写入结果int Results = 0;// 存储日历时间, timer=NULL时得到当前日历时间(从1970-01-01 00:00:00到现在的秒数)time_t NowTimeSecs = time(NULL);// NowTimeTransition存放 转换timer的值为tm结构 后的值struct tm *NowTimeTransition = localtime(&NowTimeSecs);char *str = NULL; // 存放星期转换结果// 对转后的星期值进行汉字转换switch (NowTimeTransition->tm_wday){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;}// 发送格式化输出流到文件 格式为“yy年mm月dd日 星期x tt:mm:ss”Results = fprintf(pfile, "%d年%02d月%02d日 星期%s %02d:%02d:%02d \n",NowTimeTransition->tm_year + 1900,NowTimeTransition->tm_mon + 1,NowTimeTransition->tm_mday,str,NowTimeTransition->tm_hour,NowTimeTransition->tm_min,NowTimeTransition->tm_sec);// 刷新全缓冲fflush(pfile);return Results;
}
测试
没有log.txt文件时会创建该文件,写入结果如下:
2024年05月10日 星期五 01:54:35
2024年05月10日 星期五 01:54:36
2024年05月10日 星期五 01:54:37
2024年05月10日 星期五 01:54:38
2024年05月10日 星期五 01:54:39
2024年05月10日 星期五 01:54:40
2024年05月10日 星期五 01:54:41
2024年05月10日 星期五 01:54:42
2024年05月10日 星期五 01:54:43
控制台终端结果:
yuyi@IoTDevelopment:~/MyDevelopmentFile/homework/fileIO/20240509$ ./a.out
The log file is updated 1 times
The log file is updated 2 times
The log file is updated 3 times
The log file is updated 4 times
^C