獲取當前系統時間,把時間轉換為特定格式”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;
}