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