如何使用C修改文本数据文件中的值

时间:2012-12-22 17:48:10

标签: c++ c algorithm file file-io

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的数量如何做到这一点?

1 个答案:

答案 0 :(得分:0)

如果文件是二进制格式,则更容易做到你想要的。

文本和二进制格式有什么区别?如果文件以二进制格式写入,则32位整数将表示为文件中的32个连续位。在文本格式中,数字将表示为例如32的数字序列。

那么这个差异有什么大不了的?好吧,如果用1243替换32,那么二进制格式的数字仍然需要相同的32位,因此不需要移动其他任何东西,所有你改变的就是这4个字节。在第二种情况下,您再添加2位数字,这将导致文件的所有后续内容以两个字节移位。

为了根据需要移动所有内容,您需要读取文件的当前内容更改值,然后将内容写回。我的意思是你正在做的改变之后的所有内容。