-2

ファイルの 1 つの値を変更したいのですが、次のコードがまったく機能しません。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;
}

ファイル「新規」: c111111111c1111111111111111111111111111111111c111111111111111111

私が知らない詳細はありますか?</p>

4

2 に答える 2

2

はファイル ストリームを進めているため、過去 1 つを書いたことになります。b0x63fgetc

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

あなたの問題の1つは、 fp = fopen("new", "r+"); だと思います。「r+」は読み取りと追加です。データを上書きしようとしている場合、それは機能しません。また、前述のように fgetc はファイル ストリームを進めます。

于 2012-04-27T15:45:01.890 に答える