获取系统时间,序号追加输出到文本

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<error.h>
#include<errno.h>
#include<unistd.h>
#include<strings.h>
#include<stdbool.h>

#include<sys/stat.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<fcntl.h>
#include<time.h>
int main(int argc,char **argv)
{
FILE *file_line = fopen("time.txt","a+");
if(file_line == NULL)
{
fprintf(stderr,"fopen() %s failed :%s","time.txt",strerror(errno));
exit(0);
}

FILE *lp;
int n=0;
if(!access("line",F_OK))//判断文件是否存在
{
lp = fopen("line","r");
fread(&n,sizeof(n),1,lp);
lp = freopen("line","w",lp);//注意权限的选择,从零行开始追加
}
else
{
lp = fopen("line","w");
}
setvbuf(file_line,NULL,_IONBF,0);//更改file_line缓冲方式,否则出现乱码,或者无法显示时间文本。
time_t t;
char buff[50];
while(1)
{
n++;
time(&t);//获取当前时间
snprintf(buff,50,"%3d. %s",n,ctime(&t));//将获取到的时间转换为字符串,然后将行号和字符串以“%3d. %s”的格式输出到buff中,一次最多输出50字节。
fputs(buff,file_line);//这里可以使用简单的fputs,而不需要fwrite.

//刷新行号
rewind(lp);//指针定位到文件内容最开始的地方
fwrite(&n,sizeof(n),1,lp);//将最新的行号写入lp
fflush(lp);//强制刷新
sleep(1);

}

}

你可能感兴趣的:(获取系统时间,序号追加输出到文本)