我想更改文件的一个值,但以下代码根本不起作用。当我删除if语句时,它正常工作 代码如下:
#include <stdio.h>
int main()
{
int b;
FILE *fp;
fp=fopen("new", "r+");
fseek(fp, 0x30, 0);
b = fgetc(fp);
if(b == 0x63)
fputc(0x64, fp);
fclose(fp);
return 0;
}
file&#34; new&#34;: c111111111c1111111111111111111111111111111111111c1111111111111111111
是否有一些我不知道的细节?
答案 0 :(得分:2)
如果它是b
,您已经写了一个过去 0x63
,因为fgetc
推进了文件流:
b = fgetc(fp);
if(b == 0x63) {
fseek(fp, -1, SEEK_CUR);
fputc(0x64, fp);
}
答案 1 :(得分:0)
我认为你的一个问题是,fp = fopen(“new”,“r +”); “r +”是阅读和追加。如果您正在尝试覆盖数据,那么这将无法正常工作。此外,fgetc如前所述推进文件流。