题目要求:编程读写一个文件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;
}