您的位置:首页 > 其它

在输入中如何忽略换行字符

2013-01-20 22:23 176 查看
有如下假设:有a,b,c,q四个选项(a,b,c所代表的含义可以暂时不提,q代表退出),每次输入只能从这四个选项中输入一个(如果输入其他字符,则提示为错误,要求从新输入),初学者很快会想到如下方法:

int ch;

ch=getchar();
while((ch < 'a' || ch > 'c') && ch != 'q')
{
printf("Please respond with a,b,c or q.\n");
ch=getchar();
}

但是这个方案带来的一个问题是使用缓冲输入时,函数会将回车键每次产生的换行符都作为一个错误的响应对待。要使程序界面流畅,应该跳过换行符。要实现这一目标,其中一种方法是用一个名为get_first()的新函数代替get_char(),该函数读取每行的第一个字符,并将后面的字符去掉。所以可以从写程序:
void main()
{
int ch;

ch=get_first();
while((ch < 'a' || ch > 'c') && ch != 'q')
{
printf("Please respond with a,b,c or q.\n");
ch=get_first();
}
}

char get_first()
{
int ch;

ch=getchar();
while(getchar()!='\n')
continue; //跳过本行的剩余部分
return ch;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: