【发布时间】:2011-12-18 21:53:32
【问题描述】:
我有一个 datas.txt 文件:
格式:姓氏还债
bir bir 100 2
iki iki 200 2
eray alakese 100 5
john doe 2000 10
我正在学习 C 并且 我只知道简单的文件函数(fscanf、fprinf、fopen 等)
我会
- 用
scanf询问用户名和姓氏,然后将它们分配给name和surname变量。 - 它将在文件中搜索 name 和 surname,然后将债务和付款分配给 debt、payment 变量(
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);
例子:
- 我想删除“John Doe”的记录。
- 我想将“John Doe”的债务减少到 100 美元
【问题讨论】:
-
这通常是相当困难的。如果您想在中间进行更改,您将无法移动文件的大部分。内存映射加上
memmove可能是最简单的选择。为什么不改用数据库(比如 sqlite)? -
你测试过这段代码吗?在我看来,
fscanf的行不会做你想做的事。也就是说,它将覆盖name和surname。