sdsszk 2021-08-20 14:49 采纳率: 0%
浏览 80

fwrite写固定大小长度,超过之后返回文件开头重新写

fwrite写固定大小长度,超过之后返回文件开头重新写;怎么实现啊, 

     log_fd = fopen("xxxx.log", "ab+");
    if (log_fd != NULL)
    {	
		rval = stat("dsp.log", &statbuf);
		if (rval == -1) {
			perror("stat failed");
		} 
		else 
		{
			printf("file size = %lld\n", (long long)statbuf.st_size);
		}
		if((long long)statbuf.st_size > 1024)
		{
		
		}
		fseek(log_fd, 0, SEEK_END);
		len = ftell(log_fd);
			
		if(len > 1024*10)
		{
			printf("file is big 1024*10\n");
			rewind(log_fd);
		}
		
		printf("file len: %d cur %d \n", len, cur);
		fwrite(sz_degmsg, msglen,1, log_fd);
        fclose(log_fd);

加入现在文件大小超过1M,我让他从头循环覆盖写,这样怎么实现不了那?

 

  • 写回答

3条回答 默认 最新

  • baidu_30233079 2021-08-20 15:20
    关注

    你要在另外一个地方记住当前文件写到哪里了。
    因为一旦文件写到1024 X 10这个长度后,你这一次从头写了一段数据,这个长度没有保存的。你下次再来写,第17行返回的值还是1024 X 10,所以你又从头开始写了。
    最终你每次都是覆盖前面那一点数据

    评论

报告相同问题?

问题事件

  • 创建了问题 8月20日