獲取當前系統時間,把時間轉換為特定格式”yy年mm月dd日 星期x ttmmss”,並每隔1s寫入到本地磁碟中一個叫做log

L小小园發表於2024-05-09

獲取當前系統時間,把時間轉換為特定格式”yy年mm月dd日 星期x tt:mm:ss”,並每隔1s寫入到本地磁碟中一個叫做log.txt的文字中,如果文字不存在則建立。

/**
  * @function name:	main
  * @brief        : 獲取當前系統時間,把時間轉換為特定格式”yy年mm月dd日 星期x tt:mm:ss”,並每隔1s寫入到本地磁碟中一個叫做log.txt的文字中,如果文字不存在則建立。 
  * @param  	  : argc
  				  : *argv[]
  * @retval       : int
  * @date         : 2024/05/09
  * @version      : 1.0  
  * @note         : None
  */
#include <time.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <strings.h>
#define BUFSIZE 128
int main(int argc, char const *argv[])
{ 
    //待複製檔案的路徑需要透過命令列傳遞,則需要分析命令列引數數量是否符合需求
    if(2 != argc)
    {
        printf("argument is invalid\n");
        return -1;
    }
    //開啟目標檔案(wb)
    FILE *file = fopen(argv[1],"wb");
    if(NULL == file)
    {
        perror("open file failed\n");
        return -1;
    }

    time_t temptime; //定義time_t型別變數
    struct tm *temp; //定義結構體指標用於將秒數轉換為struct tm結構
    char *way[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};//定義指標陣列儲存星期
    char buf[BUFSIZE] = {0}; //定義緩衝區儲存資料

   /無限迴圈
    while(1) 
    {
        time(&temptime);//獲取1970至今的秒數,存入到temptime中
        temp = localtime(&temptime); //用localtime將秒數轉換成struct tm型別
        sprintf(buf,"%d年%d月%d日%s %d:%d:%d\n",
                temp->tm_year+1900,
                temp->tm_mon+1,
                temp->tm_mday,
                way[temp->tm_wday],
                temp->tm_hour,
                temp->tm_min,
                temp->tm_sec);
        fputs(buf,file); //寫入到目標檔案中
        printf("file size = %ld\n",ftell(file));//檢視目標檔案的文字大小
        bzero(buf,BUFSIZE); //清空緩衝區
        //fflush(file);
        fclose(file); //關閉檔案
        file = fopen(argv[1],"ab");//再次開啟檔案(ab)
        sleep(1); //延遲1秒
    }
    
    return 0;
}


相關文章