c++ - Fputc 在 if else 中不起作用

标签 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;
}

文件"new": c111111111c1111111111111111111111111111111111111c1111111111111111111

有什么细节我不知道吗?

最佳答案

如果它是 0x63,那么您已经写了一个过去 b,因为 fgetc 推进了文件流:

b = fgetc(fp);
if(b == 0x63) {
    fseek(fp, -1, SEEK_CUR);
    fputc(0x64, fp);
}

关于c++ - Fputc 在 if else 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347778/

相关文章:

c++ - clock() - 循环前后相同的值

c - 无法获得三元运算符的输出

c - 动态分配多维 float 组的正确方法是什么?瓦尔格林德错误

ruby - 从文件输出中删除额外的换行符

java - 如何使用范围目录访问权限系统读取文件?

java - 为什么从文件读取并将详细信息存储在类中会提供垃圾值?

c++ - 错误 : ____ was not declared in this scope

带有 ostream 运算符的 C++ 类可与 VS 一起使用,但无法使用 gcc 进行编译

c++ - 使变量成为常数的重要性是什么?

c - 如何使用快速排序对一对整数的结构进行排序?