C语言:设计程序,获取当前系统时间,并把时间转换为特定格式写入到文本中

C语言:设计程序,获取当前系统时间,并把时间转换为特定格式写入到文本中

问题:设计程序,获取当前系统时间,并把时间转换为特定格式“YY年mm月dd日 tt:mm:ss“,并每隔1s写入到本地磁盘中一个叫做log.txt的文本中,如果文本不存在则创建

下面是程序代码:

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

#define LOG_FILE "log.txt"

int main() {
    FILE *fp;
    time_t rawtime;
    struct tm *timeinfo;
    char time_str[20];

    // 循环持续记录时间
    while (1) {
        // 获取当前时间
        time(&rawtime);
        // 将时间转换为本地时间
        timeinfo = localtime(&rawtime);

        // 格式化时间字符串
        strftime(time_str, sizeof(time_str), "%y年%m月%d日  %H:%M:%S", timeinfo);

        // 打开文件以追加模式写入
        fp = fopen(LOG_FILE, "a");
        if (fp == NULL) {
            perror("无法打开文件");
            return 1;
        }

        // 将时间字符串写入文件
        fprintf(fp, "%s\n", time_str);

        // 关闭文件
        fclose(fp);

        // 等待 1 秒
        sleep(1);
    }

    return 0;
}    

知识点分析

1. 头文件包含

#include <stdio.h>
#include <time.h>
#include <unistd.h>
  • stdio.h:标准输入输出库,提供了文件操作(如 fopenfprintffclose)和标准输入输出(如 printf)等函数。
  • time.h:时间处理库,用于获取和处理系统时间,包含 timelocaltimestrftime 等函数。
  • unistd.h:Unix 标准库,提供了与操作系统交互的函数,这里使用了 sleep 函数。

2. 宏定义

#define LOG_FILE "log.txt"

使用 #define 定义一个宏 LOG_FILE,将其值设为 "log.txt",方便后续代码中引用日志文件的名称。如果需要更改文件名,只需修改这一处即可。

3. 时间处理

time_t rawtime;
struct tm *timeinfo;

time(&rawtime);
timeinfo = localtime(&rawtime);
  • time_t:是一种用于表示时间的类型,通常是一个整数,存储从某个固定时间点(如 1970 年 1 月 1 日)到现在的秒数。
  • time 函数:获取当前系统时间,将结果存储在 rawtime 变量中。
  • struct tm:是一个结构体,用于存储分解后的时间信息,如年、月、日、时、分、秒等。
  • localtime 函数:将 time_t 类型的时间转换为本地时间,返回一个指向 struct tm 结构体的指针。

4. 时间格式化

char time_str[30];
strftime(time_str, sizeof(time_str), "%y年%m月%d日  %H:%M:%S", timeinfo);
  • strftime 函数:用于将 struct tm 结构体中的时间信息按照指定的格式转换为字符串。
  • %y:表示年份的后两位。
  • %m:表示月份(01 - 12)。
  • %d:表示日期(01 - 31)。
  • %H:表示小时(00 - 23)。
  • %M:表示分钟(00 - 59)。
  • %S:表示秒(00 - 59)。

5. 文件操作

FILE *fp;
fp = fopen(LOG_FILE, "a");
if (fp == NULL) {
    perror("无法打开文件");
    return 1;
}
fprintf(fp, "%s\n", time_str);
fclose(fp);
  • FILE:是一个文件指针类型,用于表示一个打开的文件。
  • fopen 函数:以指定的模式(这里是 "a",表示追加模式)打开文件,如果文件不存在则创建它。如果打开失败,返回 NULL
  • perror 函数:用于输出错误信息,方便调试。
  • fprintf 函数:将格式化的字符串写入文件。
  • fclose 函数:关闭打开的文件,释放相关资源。

6. 循环和延时

while (1) {
    // ...
    sleep(1);
}
  • while (1):创建一个无限循环,使程序持续运行。
  • sleep 函数:使程序暂停执行指定的秒数,这里是暂停 1 秒。
posted @ 2025-04-21 15:30  ice_cui  阅读(66)  评论(0)    收藏  举报