只想修改前32字节,可是文件截断了


#1

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
#define SIZE 32
char B[SIZE];
FILE * fp = fopen(“6day.mp4”, “rb”);
FILE *fq= fopen(“zao.mp4”, “w”);//zao.mp4已经存在。想把zao.mp4的前32字节改为6day.mp4的前32字节
rewind(fp);
rewind(fq);
fread(B,sizeof(char),SIZE,fp);
fwrite(B,sizeof(char),SIZE,fq);
fclose(fq);
fclose(fp);
return EXIT_SUCCESS;
}

zao.mp4本来有1G多,现在只有32B为何?如何只修改前面的32B?


#2

这不是linux的问题,这是C/C++的语法问题。
你打开zao.mp4的时候,应该用r+而不是w或者w+
也就是说问题在这句: FILE *fq= fopen(“zao.mp4”, “w”);


#3

zao.mp4读进来,修改前32byte再存回去.
上面的fwrite的代码意思是直接把zao.mp4写成32byte。
基本功啊。。。
话说这么操作视频文件不会出问题吗。。。这是想弄啥呢。。。