2012-04-27 15 views
-2

ファイルの1つの値を変更したいが、以下のコードはまったく機能しません。 if文を削除すると正しく動作します。
コードは次のとおりです。Fputcは他の場合には機能しません

#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; 
} 

ファイル "新しい":c111111111c1111111111111111111111111111111111111c1111111111111111111

は、私にはわからないことがいくつかの詳細をですそれがある場合は、1 過去bを書いた

+2

期待される結果は何ですか? – thumbmunkeys

答えて

2

fgetcがファイルストリームを進めるので、0x63

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

あなたは良いです、それは働いています。しかし、なぜ私が後ろを追いかけなかったときに[b]の隣のキャラクターが変わっていないのですか?それは変更されているはずですか? –

0

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

+1

実際には "r +"はデータを上書きしても問題ありません。 "w"や "w +"のようなものは現在のファイルを消去します。 –

+0

それは面白いです、私が試したときに私のために働かなかった。私は特に、ファイル内のデータを上書きしようとしました。それは私に追加させるだけです。 – Ci3

関連する問題