Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Fputc没有';否则我就不工作了_C++_C_File_File Io - Fatal编程技术网

C++ Fputc没有';否则我就不工作了

C++ Fputc没有';否则我就不工作了,c++,c,file,file-io,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); re

我想更改文件的一个值,但下面的代码根本不起作用。当我删除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;
}
#包括
int main()
{
int b;
文件*fp;
fp=fopen(“新”、“r+”);
fseek(fp,0x30,0);
b=fgetc(fp);
如果(b==0x63)
fputc(0x64,fp);
fclose(fp);
返回0;
}
文件“新建”: C111111111C1111111111111111111111111111111111111111111111111111111111111

有一些细节我不知道吗?

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

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

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

你很好,它可以工作。但是,为什么在我没有返回时[b]旁边的字符没有更改?它应该已经被更改了,对吗?实际上“r+”可以覆盖数据,其他的像“w”或“w+”会清除当前文件。这很有趣,当我尝试时它对我不起作用。我特别试图覆盖文件中的数据。它只会让我附加。