如果不是,Fputc不起作用

时间:2012-04-27 09:01:13

标签: c++ c file file-io

我想更改文件的一个值,但以下代码根本不起作用。当我删除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

是否有一些我不知道的细节?

2 个答案:

答案 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如前所述推进文件流。