文件的调用问题,高手帮帮忙
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 8
struct LIST//结构体
{
char SPM[100];
char FL[1000];
float DJ;
int KC;
}list[N];
void chaxun()//查询
{
int i;
char s[20];
char a[300];
FILE *fp;
struct LIST list[N];
char *p;
p=s;
if((fp=fopen("jsj0202_store.txt","r"))==NULL)
{
printf("打开文件失败,请检查路径设置\n\n");
exit(0);
}
printf("\n");
fgets(a,200,fp);
printf("\t%s",a);
printf("\n");
for(i=0;i<N;i++)
{
fscanf(fp,"%s",list[i].SPM);
fscanf(fp,"%s",list[i].FL);
fscanf(fp,"%f",&list[i].DJ);
fscanf(fp,"%d",&list[i].KC);
printf("\t%-10s\t%-10s\t%-10.2f\t%-10d\t\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
}
printf("\n");
printf("查询物品名:");
scanf("%s",s);
printf("\n");
for(i=0;i<N;i++)
{
if(strcmp(p,list[i].SPM)==0)
printf(" \t%-10s\t%-10s\t%-10.2f\t%-10d\t\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
}
printf("\n");
printf("库存小于30的物品:\n");
printf("\n");
for(i=0;i<N;i++)
{
if(list[i].KC<30)
printf(" \t%-10s\t%-10s\t%-10.2f\t%-10d\t\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
}
fclose(fp);
}
void menu()//菜单
{
printf("\n");
printf(" ================>>>>仓库管理系统<<<<==================\n\n");
printf(" 1.实现查询和现实功能:\n");
printf(" 2.实现排序功能:\n");
printf(" 3.统计仓库所有物品的总价,每种不同分类的物品\n");
printf(" 4.实现物品出仓\n");
printf(" 5.实现物品库存信息和修改功能\n");
printf(" 6.退出\n\n");
printf(" ======================================================\n\n");
}
void main()//主函数
{
int i;
while(i!=6)
{
menu();
printf(" ************ 请选择操作序号 : **********************\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("实现查询和现实功能:\n");
chaxun();
break;
case 2:
printf("实现排序功能:\n");
break;
case 3:
printf("统计仓库所有物品的总价,每种不同分类的物品\n");
break;
case 4:
printf("实现物品出仓\n");
break;
case 5:
printf("实现物品库存信息和修改功能\n");
break;
case 6:
printf("退出\n");
break;
}
}
}
商品名 分类 单价 库存数量
雀巢咖啡 饮料 10.00 100
康师傅方便面 食品 3.50 100
统一矿泉水 饮料 1.00 1000
红叶台灯 学习用品 15.00 20
江明饼干 食品 2.30 20
作业本 学习用品 1.00 185
光明酸奶 饮料 6.00 100
富光杯 生活用品 7.00 50
怎么把查询函数中读到的文件放到主函数啊?帮帮忙。我想从主函数调用文件,不想直接在函数里读出文件。#include <string.h>
#include <stdlib.h>
#define N 8
struct LIST//结构体
{
char SPM[100];
char FL[1000];
float DJ;
int KC;
}list[N];
void chaxun()//查询
{
int i;
char s[20];
char a[300];
FILE *fp;
struct LIST list[N];
char *p;
p=s;
if((fp=fopen("jsj0202_store.txt","r"))==NULL)
{
printf("打开文件失败,请检查路径设置\n\n");
exit(0);
}
printf("\n");
fgets(a,200,fp);
printf("\t%s",a);
printf("\n");
for(i=0;i<N;i++)
{
fscanf(fp,"%s",list[i].SPM);
fscanf(fp,"%s",list[i].FL);
fscanf(fp,"%f",&list[i].DJ);
fscanf(fp,"%d",&list[i].KC);
printf("\t%-10s\t%-10s\t%-10.2f\t%-10d\t\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
}
printf("\n");
printf("查询物品名:");
scanf("%s",s);
printf("\n");
for(i=0;i<N;i++)
{
if(strcmp(p,list[i].SPM)==0)
printf(" \t%-10s\t%-10s\t%-10.2f\t%-10d\t\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
}
printf("\n");
printf("库存小于30的物品:\n");
printf("\n");
for(i=0;i<N;i++)
{
if(list[i].KC<30)
printf(" \t%-10s\t%-10s\t%-10.2f\t%-10d\t\n ",list[i].SPM,list[i].FL,list[i].DJ,list[i].KC);
}
fclose(fp);
}
void menu()//菜单
{
printf("\n");
printf(" ================>>>>仓库管理系统<<<<==================\n\n");
printf(" 1.实现查询和现实功能:\n");
printf(" 2.实现排序功能:\n");
printf(" 3.统计仓库所有物品的总价,每种不同分类的物品\n");
printf(" 4.实现物品出仓\n");
printf(" 5.实现物品库存信息和修改功能\n");
printf(" 6.退出\n\n");
printf(" ======================================================\n\n");
}
void main()//主函数
{
int i;
while(i!=6)
{
menu();
printf(" ************ 请选择操作序号 : **********************\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("实现查询和现实功能:\n");
chaxun();
break;
case 2:
printf("实现排序功能:\n");
break;
case 3:
printf("统计仓库所有物品的总价,每种不同分类的物品\n");
break;
case 4:
printf("实现物品出仓\n");
break;
case 5:
printf("实现物品库存信息和修改功能\n");
break;
case 6:
printf("退出\n");
break;
}
}
}
商品名 分类 单价 库存数量
雀巢咖啡 饮料 10.00 100
康师傅方便面 食品 3.50 100
统一矿泉水 饮料 1.00 1000
红叶台灯 学习用品 15.00 20
江明饼干 食品 2.30 20
作业本 学习用品 1.00 185
光明酸奶 饮料 6.00 100
富光杯 生活用品 7.00 50
[ 本帖最后由 宇智波曌 于 2011-7-1 23:36 编辑 ]