//题目要求:编程读写一个文件test.txt,每隔1秒向文件中写入一行数据,类似这样:
//1, 2007-7-30 15:16:42
//2, 2007-7-30 15:16:43
//该程序应该无限循环,直到按Ctrl-C中断程序。
//再次启动程序写文件时可以追加到原文件之后,并且序号能够接续上次的序号,比如:
//1, 2007-7-30 15:16:42
//2, 2007-7-30 15:16:43
//3, 2007-7-30 15:19:02
//4, 2007-7-30 15:19:03
//5, 2007-7-30 15:19:04
//time():计算当前时间(单位秒),当前时间 - 1970-1-1
//localtime():将time获得的时间转换成年月日时分秒的格式
//typedef long int time_t;
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
//time_t;
time_t t;
struct tm *tm;
int n = 0;
char buf[32] = "";
FILE *fp;
fp = fopen("test.txt", "a+");
if (fp == NULL)
{
perror("fopen err");
return -1;
}
printf("fopen ok\n");
//计算文件当前行数
while (fgets(buf, 32, fp) != NULL)
{
if (buf[strlen(buf) - 1] == '\n')
n++;
}
while (1)
{
//t=time(NULL);
time(&t);
tm = localtime(&t);
fprintf(fp, "%d,%d-%d-%d %d-%d-%d\n", ++n, tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
fflush(NULL);
sleep(1);
}
return 0;
}