一、具体要求。
编程读写一个文件,每隔1秒向文件中写入一行数据,类似这样:
1, 2007-7-30 15:16:42
2, 2007-7-30 15:16:43
该程序应该无限循环,直到按Ctrl-C中断程序。
再次启动程序写文件时可以追加到原文件之后,并且序号能够接续上次的序号。
二、代码
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
FILE*fp;
fp=fopen("9白板.c","a+");
if(fp==NULL)
{
perror("fopen error");
return -1;
}
int i;//定义行数
char buf[32]="";
while(1)
{
rewind(fp);
for(i=1;fgets(buf,32,fp)!=NULL;)
{
if(buf[strlen(buf)-1]=='\n') //判断一行是否结束
i++;
}
time_t t;
struct tm*tm_now;
time(&t);
tm_now=localtime(&t);
fprintf(fp,"%d, %d-%d-%d %d:%d:%d\n",i,tm_now->tm_year+1900,tm_now->tm_mon+1,tm_now->tm_mday,tm_now->tm_hour,tm_now->tm_min,tm_now->tm_sec);
fflush(NULL);
sleep(1);
}
return 0;
}
因为需要循环,就不需要使用fclose(fp)关闭文件了;
三、运行情况
在文件“9白板.c”中: