我有一个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