通过结构体的方式查找文件中的一组数据,并且比较出good.xiaoshou值最大的五组数据
我在不知道一共有多少件商品的情况下(结构体数组的长度下)采用结构体的方式进行文件查询,以及对于销量最好的5件商品和销量最差的5件商品进行查询。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
void luru(void);
void xianshi(void);
void chaxun(void);
void tongji(void);
void load(void);
int a,b,c;
loop:printf("************************\n");
printf("** 1 商品信息录入 **\n");
printf("** 2 商品信息显示 **\n");
printf("** 3 商品信息查询 **\n");
printf("** 4 商品信息统计 **\n);
printf("** 5 结束程序 **\n");
printf("************************\n");
for(;;)
{
printf("请输入序号:\n");
scanf("%d",&a);
switch(a)
{
case 1:luru();break;
case 2:xianshi();break;
case 3:chaxun();break;
case 4:tongji();break;
case 5:return 0;break;
case 6:load();break;
default:goto loop;break;
}
printf("是否继续查询\n 1 是\n 2 否\n");
scanf("%d",&b);
if(b!=1)
break;
}
}
struct GOOD
{
char flag[1];
char name[30];
long int bianhao;
int price;
int amount;
int xiaoshou;
}good;
void luru()
{
FILE *fp;
printf("请在输入每个商品前先输入空格,而后依次输入商品的名字,编号,价格,总量,销售量;以逗号间隔,每个商品输入结束后输入分号,以#号结束\n");
for(;;)
{
if((fp=fopen("save.txt","a"))==NULL)
{
printf("can't open file\n'");
exit(0);
}
if(strcmp(gets(good.flag),"#")!=0)
fscanf(fp,"%s,%ld,%d,%d,%d;",good.name,good.bianhao,good.price,good.amount,good.xiaoshou);
else
break;
if(fwrite(&good,sizeof(struct GOOD),1,fp)!=1)
printf("file write error\n");
}
fclose(fp);
return;
}
void xianshi(void)
{
char filename;
FILE* file=fopen("save.txt","r+");
while((filename=fgetc(file))!=EOF)
{
if(filename=='\0')
continue;
else if(filename==' ')
continue;
else if(filename==';')
printf("\n");
else
printf("%c",filename);
}
return;
}
int load() /*导入函数*/
{
FILE*fp2;
int i=0;
struct GOOD good1[i];
if((fp2=fopen("save.txt","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&good1[i],sizeof(struct GOOD),1,fp2);
i++;
}
while(feof(fp2)==0);
}
printf("%d",i);
fclose(fp2);
return(i-1);
}
void chaxun(void)
{
char name[100];
int i,m;
struct GOOD good1[i];
printf("请输入要查找的物品名称:\n");
scanf("%s",name);
/*m是总物品数 */
m=load();
for(i=0;i<m;i++)
if(strcmp(name,good1[i].name)==0)
{printf("%s,%d,%d,%d,%d\n",good1[i].name,good1[i].bianhao,good1[i].price,good1[i].amount,good1[i].xiaoshou);
break;
}
if(i==m)
printf("对不起,查无此物件\n");
return;
}
void tongji(void)
{
printf("4");
}