读入数据类似字符串+数字+字符串+数字这样循环穿插混合的类型
比如下面的代码,main函数里有个while循环,无限刷菜单然后用户输入选项的那种,一开始使用freopen会导致缓冲区无限有数据,即无法继续输入选项了就
采用ifstream来解决,注释掉的是之前的会出问题的freopen版本的代码
#include
#define N 50
#define M 50
#define W 50
#define Pi acos(-1.0)
#define clr(a) memset(a,0,sizeof a)
#define space(a) for(int i=0;i
using namespace std;
int m_num,w_num,s_num;//
struct m_item{
char name[N];
int no[N];
int score[N];
}m_item[M];
struct w_item{
char name[N];
int no[N];
int score[N];
}w_item[M];
int sc[5]={7,5,3,2,1};
int mod1(){
ifstream fin1("item.txt");
//freopen("item.txt","r",stdin);
while(fin1>>s_num>>m_num>>w_num){
cout<
// scanf("%d %d %d",&s_num,&m_num,&w_num);
// getchar();
for(int i=0;i
//gets(m_item[i].name);
fin1>>m_item[i].name;
//scanf("%s",m_item[i].name);
cout<
//printf("%s",m_item[i].name);
for(int j=0;j
fin1>>m_item[i].no[j];
//scanf("%d",&m_item[i].no[j]);
cout<
//printf("%d",m_item[i].no[j]);
m_item[i].score[j]=sc[j];
}
}
}
for(int i=0;i
//gets(w_item[i].name);
fin1>>w_item[i].name;
//scanf("%s",w_item[i].name);
cout<
//printf("%s",w_item[i].name);
for(int j=0;j
fin1>>w_item[i].no[j];
//scanf("%d",&w_item[i].no[j]);
cout<
//printf("%d",w_item[i].no[j]);
w_item[i].score[j]=sc[j];
}
//getchar();
}
fin1.close();
return 0;
}
int main(){
int option; // 系统功能菜单选项
int cnt1=0;
while(true){
// 输出系统功能提示菜单
cout<
cin>>option;
switch(option)
{
case 1:mod1();break;
// 添加相应代码
case 0:
exit(0);
default:
cout<
}
}
return 0;
}