读书人

一个输入输出有关问题

发布时间: 2012-03-01 10:25:46 作者: rapoo

一个输入输出问题!
#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);

读书人网 >C语言

热点推荐