我有一個datas.txt文件:Ç - 刪除/ Modifiying一條直線從一個文件
格式:姓名姓催債
bir bir 100 2
iki iki 200 2
eray alakese 100 5
john doe 2000 10
我學習C和我知道剛纔簡單的文件功能(的fscanf,fprinf,FOPEN等)
我會
- 詢問用戶名和姓與
scanf
然後將它們分配到名稱和姓變量。 - 它將搜索文件名和姓,然後分配債務和支付債務,支付變量(
fscanf(file, "%s %s %d %d", name, surname, &debt, &payment);
) - 刪除或修改此行
這是我的源代碼 。
scanf("%s", &name);
scanf("%s", &surname);
file = fopen("datas.txt", "r");
/* this fscanf() is working as expected. There is no problem. */
fscanf(file, "%s %s %d %d", name, surname, &debt, &payment);
/* modify and delete actions here */
fclose(file);
例子:
- 我要刪除 「李四」 的紀錄。
- 我想減少「李四」的債務$ 100
這一般來說相當困難。如果您想在中間進行更改,則不會繞過移動文件的大部分內容。內存映射加'memmove'可能是最簡單的選擇。爲什麼不使用數據庫(比如sqlite)? – 2011-12-18 13:39:57
你測試了這個代碼嗎?在我看來,'fscanf'這行不會做你想做的事情。也就是說,它會覆蓋'name'和'surname'。 – Staven 2011-12-18 13:45:06