这段代码输出有问题
程序代码:
void AutoComp(void){ // 自动计算经销商经营的每一个产品所得利润 char ch[10]; long pos; FILE *fp1, *fp2, *fp3; //distributor t; // 定义经销商表变量 t products t1; // 定义商品表变量 t1 range t2; // 定义经营范围表变量 t2 if ((fp1=fopen("..\\CP2012self\\2877products.dat", "rb"))==0) { printf("\n\nCannot open products data file!\n"); fclose(fp1); return; } if ((fp2=fopen("..\\CP2012self\\2877range.dat", "rb"))==0) { printf("\n\nCannot open range data file!\n"); fclose(fp1); fclose(fp2); return; } system("cls"); printf("\n\n\t\tAuto computing, Please waiting......"); rewind(fp2); pos=ftell(fp2); // 保留下该经销商经营范围记录的位置 fread(&t2, sizeof(range), 1, fp2); while (!feof(fp2)) { // 逐个经销商进行计算 rewind(fp1); // 复位到商品文件头 fread(&t1, sizeof(products), 1, fp1); // 从商品文件中读取一个商品记录 while (!feof(fp1)) { // 在商品表中查找t2.productnum商品的进价记录 if (strcmp(t2.productnum, t1.num)==0) { // 找到了t2.productnum商品的进价记录 t2.profit=(t2.sprice-t1.pprice)*t2.number; break; } fread(&t1, sizeof(products), 1, fp1); //无法写入文件 } fseek(fp2, pos, SEEK_SET); // 在文件中定位给定编号的经销商记录 fwrite(&t2, sizeof(range), 1, fp2); // 修改文件中给定编号的经销商记录 pos=pos+sizeof(range); // 保留下该经销商经营范围记录的位置 fseek(fp2, pos, SEEK_SET); // 在文件中定位当前记录的下一经销商记录 fread(&t2, sizeof(t2), 1, fp2); } fclose(fp2); fclose(fp1); system("cls"); printf("\n\n\t\tAuto computation is over. "); getch(); }