[已解决]想写一个程序,精确修改二进制文件的某些字节


#1

要用到哪些函数?最好是C的。 比如,我要把二进制文件的第2到5字节改为 mooc。


openSUSE-Gossip-20180102-20180402
#2

简单的文件层面的话就读写文件的函数就够了吧,大部分语言应该都可以。
但是如果你要改的是图像的某些像素之类的,就坑多了。。找裤吧


#3

还是要看官方文档呀!上 en.cppreference.com查。改了一下例子。知道了!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
#define SIZE 5
double A[SIZE] = {1.,2.,3.,4.,5.};
double C[2]={8.,9.};
FILE * fp = fopen(“test.bin”, “wb”);
fwrite(A,sizeof(double),SIZE,fp);
if (fseek(fp,sizeof(double)*2L,SEEK_SET) != 0)
{
if (ferror(fp))
{
perror(“fseek()”);
fprintf(stderr,“fseek() failed in file %s at line # %d\n”, FILE,LINE-5);
exit(EXIT_FAILURE);
}
}
fwrite(C,sizeof(double),2,fp);
rewind(fp);
fclose (fp);
double B[SIZE];
fp = fopen(“test.bin”,“rb”);
fread(B,sizeof(double),SIZE,fp);
for(int i=0;i<SIZE;i++)
printf(“B[%d]=%.1f\n”,i, B[i]);
fclose(fp);
return EXIT_SUCCESS;
}