#include <stdio.h>
#include<time.h>
#include<unistd.h>
int GetLine(FILE*fp)
{
fseek(fp,0,SEEK_END);//判空
if(ftell(fp) == 0)
return 0;
char g = 0;
int line = 0,i = 1;
while((g = fgetc(fp)) != '[')//将流指针移至最后一行开头
{
fseek(fp,0-(i++),SEEK_END);
}
while((g = fgetc(fp)) <= '9' && g >= '0')//取最后一行行号
{
line = line*10+(g-'0');
}
return line;
}
int main(int argc, const char *argv[])
{
FILE* fp = fopen("time.txt","r+");//打开文件并检测是否成功
if(NULL == fp)
{
perror("fopen");
return -1;
}
int line;
time_t t;
struct tm *ti = NULL;
while(1)
{
t = time(NULL);//获取时间
if(-1 == t)
{
perror("time");
return -1;
}
ti = localtime(&t);//获取当前时间
line=GetLine(fp);
fseek(fp,0,SEEK_END);
fprintf(fp,"[%d] %d-%d-%d %d:%d:%d\n\n",\
line+1,ti->tm_year+1900,ti->tm_mon+1,ti->tm_mday,\
ti->tm_hour,ti->tm_min,ti->tm_sec);//写入文件
sleep(1);
}
return 0;
}