-2

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

文件“新”:c111111111c111111111111111111111111111111111111c111111111111111111

是不是有一些我不知道的细节?</p>

4

2 回答 2

2

如果是,您已经写了过去 ,因为推进了文件流:b0x63fgetc

b = fgetc(fp);
if(b == 0x63) {
    fseek(fp, -1, SEEK_CUR);
    fputc(0x64, fp);
}
于 2012-04-27T09:04:53.413 回答
0

我认为您的问题之一是 fp = fopen("new", "r+"); “r+”是读取和追加。如果您试图覆盖数据,那么这将不起作用。此外, fgetc 会如前所述推进文件流。

于 2012-04-27T15:45:01.890 回答