简单的时间录入代码

admin2024-08-24  7

题目要求:编程读写一个文件test.txt,每隔1秒向文件中写入一行录入时间的数据,类似这样:

1,  2007-7-30 15:16:42  

2,  2007-7-30 15:16:43

该程序应该无限循环,直到按Ctrl-C中断程序。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <signal.h>
int num = 0; // 变量来存储当前序号
void aa(int a)
{
    if (a == SIGINT) // ctrl c截止判断
    {
        printf("程序中断退出...\n");
        exit(0); // 结束该程序
    }
}
void bb(const char *b)
{
    FILE *q = fopen(b, "r");
    if (q == NULL) // 判断是否为空
    {
        num = 0; // 如果文件不存在,序号从1开始
        return;
    }
    char buf[256];
    while (fgets(buf, sizeof(buf), q) != NULL) // 循环写入
    {
        scanf(buf, "%d", &num);
    }
    fclose(q);
}
int main(int argc, char const *argv[])
{
    signal(SIGINT, aa);
    const char *p = "aa.txt";
    bb(p);
    FILE *file;
    while (1) // 循环判断
    {
        file = fopen(p, "a");
        if (file == NULL)
        {
            perror("无法打开文件");
            return 1;
        }
        time_t t = time(NULL);
        struct tm *tm_info = localtime(&t);
        num++;                                               // 增加序号
        fprintf(file, "%d, %04d-%02d-%02d %02d:%02d:%02d\n", // 写入文件
                num,
                tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday,
                tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);
        fclose(file);
        sleep(1); // 每隔1秒钟写入
    }
    return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!