关于二进制修改保存后乱码的问题
现有一二进制文件 大概里面有1000个数 我现在要对其中的150个数进行修改再保存回原位置 我的想法是先把150个数读出来
转化到double型之后进行了修改 然后现在想把这150个数再放到原来的位置 可是我运行显示的时候发现会有一堆乱码
就是后面有好多“屯屯屯屯屯屯屯屯屯屯屯屯屯”这样的 不知道为什么 下面是我的代码 麻烦大家帮帮忙啊
double *h= new double[150];
int i,j;
FILE *he;
he=fopen(edit,"r"); // edit里面存的是修改完后的那150个数,他们是double型的
FILE *fp;
fp=fopen(str_abs,"r+");// str_abs就是那个二进制文件
for(i=0;i<7;i++)
fscanf(he,"%*[^\n]%*c");
j=0;
while(!feof(he))
{
fscanf(he,"%lf %lf %lf",&h[j+2],&h[j],&h[j+1]);
j=j+3;
}
fclose(he);//上面这段是把150个数读出来放到h[j]这个数组里
m=m-1;
fseek(fp,0L,SEEK_END);
long num = ftell(fp);
double *z= new double[num+1];
z[num]='\0';
// rewind(fp);
fseek(fp,0L,SEEK_SET);
fread(z,sizeof(int),num,fp);
// fclose(fp);
// fp=fopen(str_abs,"w");
j=0;
for(int c=4004+m*1200;c<4154+m*1200;c++)
{
z[c]=h[j];
j++;
} //上面这块我想实现的是把所有二进制都读 出来保存到z[num]这个数组里面,然后再在原位置用
h[j]替换那150个二进制数 这样就得到了我修改过的二进制文件。
fwrite(z,sizeof(int),num,fp);//再把这个数组写入到fp里面
fclose(fp);
}
//ShellExecute(NULL,"open",str_abs,NULL,NULL,SW_SHOW);
}