文件操作的C程序 重复地输入同一条目 打印结果奇怪

来源:百度知道 编辑:UC知道 时间:2024/06/06 08:20:01
#include<stdio.h>
#include<stdlib.h>
struct commodityData{
int record_num;
char name[15];
int quantity;
float price;
};

int enterchoice(void);
void fileprint(FILE*);
void deleterecord(FILE*);
void updaterecord(FILE*);

main()
{
int i,choice;
struct commodityData commodity={0,"",0,0.0};//初始化一个结构
FILE* fPtr;

//创建100条空记录
if((fPtr=fopen("commodity.dat","w+"))==NULL)
printf("File could not be opened.\n");
else
for(i=1;i<=100;i++)//在文件 commodity.data 里初始化100条空记录
fwrite(&commodity,sizeof(struct commodityData),1,fPtr);//把变量blankCommodity的4个字节写入fPtr指向的文件

//输入每件商品的相关数据
printf("Enter record number(1-100,0 to end input)\n");
scanf("%d",&commodity.record_num);
while(commodit

你注意到main中那个用来循环输入的while里的fseek没有啊
fseek(fPtr,(commodity.record_num-1)*sizeof(struct commodityData),SEEK_SET); 看到没有这里面有一个(commodity.record_num-1)*sizeof(struct commodityData),注意那个commodity.record_num-1这是你输入的记录编号,如果是同样的编号的话,会覆盖原来输入的同样编号的内容
这个是为了避免有相同的编号存放在里面啊.