gpt4 book ai didi

c - 为什么这个函数运行时会删除所有文件数据?

转载 作者:行者123 更新时间:2023-11-30 21:11:21 26 4
gpt4 key购买 nike

当我运行程序并且想要删除产品代码时,此函数会删除所有文件。

你能帮我一下吗?

void PRODUCT_delete()
{
int code;
FILE *stock=fopen("stock.dat","wb+");

printf("PLEASE TYPE THE CODE OF THE PRODUCT YOU WISH TO DELETE:\t");

scanf(" %d",& code);
printf("\n");

fseek(stock,0,SEEK_END);

int fl_size=ftell(stock);
int quantity= fl_size/sizeof(product);

rewind(stock);

prdct cprd= (product *)malloc (sizeof(product)*quantity);
assert(cprd);

prdct cprd1= (product *) malloc(sizeof(product)*quantity);
assert(cprd1);

fread(cprd1,sizeof(product),quantity,stock);

int i;

for(i=0;i<quantity;i++)
{
if(cprd1[i].code!=code)
{
cprd[i]=cprd1[i++];

}
else
{
continue;
}
}

fwrite(cprd,sizeof(product),quantity,stock);

fclose(stock);
free(cprd1);
free(cprd);
printf("\a THE PRODUCT DELETED!!!\n")
}

最佳答案

一些问题:

  1. 使用 wb+ 打开文件会截断文件,您可能应该使用新文件进行输出,然后重命名
  2. <错误,已删除>
  3. 如果删除产品代码,则需要减少数量

关于c - 为什么这个函数运行时会删除所有文件数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24063828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com