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

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日

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗