#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#define rmfilesize 512
#if 0
int file_deal(char *filename,int filesize,char *databuf,int datalen)
{
FILE *fp = NULL;
int filelen = 0;
char *buf = NULL;
fp = fopen(filename,"r");
if(fp != NULL)
{
fseek(fp,0,SEEK_END);
filelen = ftell(fp);
if(filelen > filesize)
{
buf = (char*)malloc(sizeof(char)*(filelen-rmfilesize));
if(buf == NULL)
{
fclose(fp);
return -1;
}
memset(buf,0,filelen-rmfilesize);
fseek(fp,rmfilesize,SEEK_SET);
fread(buf,filelen-rmfilesize,sizeof(char),fp);
fclose(fp);
fp = fopen(filename,"w");
if(fp == NULL)
{
return -1;
}
fwrite(buf,sizeof(char),filelen-rmfilesize,fp);
fclose(fp);
}
else
{
fclose(fp);
}
}
fp = fopen(filename,"a");
if(fp == NULL)
{
return -1;
}
fwrite(databuf,sizeof(char),datalen,fp);
fclose(fp);
}
#else
int file_deal(char *filename,int filesize,char *databuf,int datalen)
{
FILE *fp = NULL;
int filelen = 0;
char *buf = NULL;
int rmfilesizetrue;
rmfilesizetrue = rmfilesize;
fp = fopen(filename,"r");
int i=0;
if(fp != NULL)
{
fseek(fp,0,SEEK_END);
filelen = ftell(fp);
if(filelen > filesize)
{
buf = (char*)malloc(sizeof(char)*(filelen));
if(buf == NULL)
{
fclose(fp);
return -1;
}
memset(buf,0,filelen);
fseek(fp,0,SEEK_SET);
fread(buf,filelen,sizeof(char),fp);
while(i<rmfilesize-1)
{
if(buf[rmfilesize-i-1] == '\n')
{
rmfilesizetrue = rmfilesize-i;
break;
}
i++;
}
fclose(fp);
fp = fopen(filename,"w");
if(fp == NULL)
{
return -1;
}
fwrite(&buf[rmfilesizetrue],sizeof(char),filelen-rmfilesizetrue,fp);
fclose(fp);
}
else
{
fclose(fp);
}
}
fp = fopen(filename,"a");
if(fp == NULL)
{
return -1;
}
fwrite(databuf,sizeof(char),datalen,fp);
fclose(fp);
}
#endif
int writeInfoFile(char *databuf,int datalen)
{
int filesize = 1024;
char *filename = "log.log";
file_deal(filename,filesize,databuf,datalen);
}
int main(void)
{
char *databuf = "hello world,I am very good,I am fun,my name is hhhhh,you are not guess, believe me,my strlen is 100\n";
int datalen;
char buf[10] = {0};
int i;
datalen = strlen(databuf);
for(i=0;i<8;i++)
{
sprintf(buf,"%d\n",i);
writeInfoFile(databuf,datalen);
writeInfoFile(buf,strlen(buf));
}
}