首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个输入输出有关问题

2012-03-01 
一个输入输出问题!#include stdio.h#include stdlib.hstruct{intnumcharname[20]charsexcharjobun

一个输入输出问题!
#include <stdio.h>
#include <stdlib.h>
struct
{
int   num;
char   name[20];
char   sex;
char   job;
union
{
int   cla;
char   position[10];
}category;
}person[2];

void   main()
{
int   i,k;
for(i=0;i <=1;i++)
{
k=0;
do
{
scanf( "%d   %s   %c   %c ",&person[i].num,person[i].name,&person[i].sex,&person[i].job);
if(person[i].job== 's ')//如果job是s,就输入%d
{
scanf( "%d ",&person[i].category.cla);
k=1;
}
else
if(person[i].job== 't ')//job是t,输入%s
{
scanf( "%s ",person[i].category.position);
k=1;
}
else   //job不是t或s,输入无效,重新输入
{
printf( "input   error!   input   again!\n ");       //!!!****这里是问题所在!!!
//system( "cls ");
}
}while(k==0);
}
printf( "Num         Name               Sex   Job   Class/Position\n ");
for(i=0;i <=1;i++)
{
if(person[i].job== 's ')
printf( "%-6d   %-10s   %-3c   %-3c   %-6d\n ",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.cla);
else
printf( "%-6d   %-10s   %-3c   %-3c   %-6s\n ",person[i].num,person[i].name,person[i].sex,person[i].job,person[i].category.position);

}
}

我输入101   Li   f   a   professor      
因为程序是判断第四个字符 'a '不是t或s,于是进行while(k==0)循环,重新输入所有数据,但是运行会出错,不断提示“input   error!   input   again!\n”。原因应该是第四个字符后的 "professor ",被分到下一次循环中的输入了,导致出错。那么应该怎么做呢?我用system( "cls ")清屏,但不行。

[解决办法]

system( "cls ");
改成
fflush(stdin);
[解决办法]
printf( "input error! input again!\n "); //
后边加上
char buf[128];
gets(buf);

热点排行