檔案IO中基礎操作

林大官人995發表於2024-05-09

開啟或新建檔案迴圈記錄系統時間

/*******************************************************************
 *
 *	檔名稱  :	檔案I/O中記錄系統時間
 *	檔案作者  : mailLinL@163.com
 *	建立日期  :  2024/05/09
 *	檔案功能  :  開啟或建立檔案,並向檔案中寫入系統時間
 *	注意事項  :  None
 *
 *	CopyRight (c)  2024   mailLinL@163.com   All Right Reseverd
 *
 * *****************************************************************/

標頭檔案包含

#include <stdio.h>
#include "time.h"
#include <stdlib.h>
#include <unistd.h>

自定義函式介面

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

/*******************************************************************
 *
 *	函式名稱:	TimeWriter
 *	函式功能:	向檔案中寫入系統時間,檔案不存在時自動建立
 *	函式引數:	none
 *	返回結果:
 *				@dest   檔案流地址指標
 *	注意事項:	None
 *	函式作者:	mailLinL@163.com
 *	建立日期:	2024/05/09
 *	修改歷史:
 *	函式版本:	V1.0
 * *****************************************************************/
void TimeWriter(FILE *dest)
{
    //定義變數儲存time函式返回的秒數,並使用localtime函式轉換成當前的系統時間
    long int data = 0;
    struct tm *now = (struct tm *)calloc(1, sizeof(struct tm *));
    if (NULL == dest)
    {
        printf("file open error\n");
        exit(1);
    }
    while (1)
    {
        data = time(NULL);
        now = localtime(&data);
        fprintf(dest, "%d年%02d月%02d日-%d-%02d-%02d-%02d\n", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday, now->tm_wday, now->tm_hour, now->tm_min, now->tm_sec);
        usleep(500000);
    }
}

主函式中呼叫測試

int main(int argc, char const *argv[])
{
    // 判斷命令列輸入的引數是否有效
    if (2 != argc)
    {
        printf("argument is error!\n");
        exit(1);
    }
    // 判斷檔案地址是否有效
    if (NULL == argv[1])
    {
        perror("File open if error!");
        exit(1);
    }
    // 以追加方式開啟一個log.txt檔案,間隔1s將系統時間寫入檔案中
    FILE *dest = fopen("log.txt", "ab");
    TimeWriter(dest);
    return 0;
}

相關文章