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

4

1 回答 1

0

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

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

那么这种差异有什么大不了的呢?好吧,如果您将 32 替换为 1243,在二进制格式中,该数字仍将采用相同的 32 位,因此无需移动其他任何内容,您只需更改这 4 个字节。而在第二种情况下,您再添加 2 个数字,这将导致文件的所有后续内容移动两个字节。

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

于 2012-12-22T17:57:18.673 回答