编辑代码

#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);//跳转到距离文件头512字节处
            fread(buf,filelen-rmfilesize,sizeof(char),fp);//读取512字节之后的数据
            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));
    }
    
}