2012-04-27 46 views
-2

我想更改文件的一個值,但以下代碼完全不起作用。它在我刪除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

有一些細節我不知道

+2

預期結果是什麼? – thumbmunkeys 2012-04-27 09:03:06

回答

2

你寫一個過去b如果它是什麼? 0x63,因爲fgetc前進文件流:

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

你很好,很有效。但是爲什麼當我沒有找回時,[b]旁邊的人物沒有被改變?它應該被改變,對吧? – 2012-04-28 00:57:10

0

我認爲你的問題之一是,fp = fopen(「new」,「r +」); 「r +」是讀取和追加。如果你想覆蓋數據,那麼這是行不通的。另外,fgetc如前所述推進文件流。

+1

實際上「r +」可以覆蓋數據,其他的如「w」或「w +」會清除當前文件。 – 2012-04-28 01:10:01

+0

這很有趣,當我嘗試時,它不適合我。我專門試圖覆蓋我在文件中的數據。它只會讓我追加。 – Ci3 2012-04-28 06:30:07

相關問題