2012-12-22 61 views
-2
while(!feof(fp)) 
{ 
    fscanf(fp,"%d %s %d %d",&res[i].id,res[i].title,&res[i].price,&res[i].qty); 
    i++; 
} 
while(j<i) 
{ 
    printf("\nID:|%d|\tNAME:|%s|\tPRICE:|%d|\tQTY:|%d|",res[j].id,res[j].title,res[j].price,res[j].qty); 
    j++; 
} 

我有這段代碼正在從文件中收集數據。現在我想知道,如果從像res[id]這樣的用戶那裏獲得輸入,並且我想減少該特定ID的數量,那麼該怎麼做?如何修改文本數據文件中的值使用C

+0

請修復您的代碼 –

回答

0

如果該文件是二進制格式,則可以更容易地執行所需操作。

文本和二進制格式有什麼區別?如果文件以二進制格式寫入,則32位整數將在文件中表示爲32個連續位。在文本格式中,數字將被表示爲數字序列,例如32

那麼這個區別有什麼大不了的?那麼如果你用1243替換32,二進制格式的數字將仍然採用相同的32位,所以沒有別的東西需要移動,你改變的就是這4個字節。在第二種情況下,您再添加2個數字,這將導致文件的所有後續內容以兩個字節進行移位。

爲了根據需要移動所有內容,您需要閱讀文件的當前內容並更改該值,然後再寫回內容。我的意思是你正在做的改變之後的所有內容。