当我运行程序并且我想删除产品代码时,此功能会删除所有文件。
你能帮我吗?
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")
}
答案 0 :(得分:0)
请参阅:
w+
截断文件。您应该使用r+
显然b
修饰符用于windows(非posix系统)。
答案 1 :(得分:0)
一些问题: