在输入中如何忽略换行字符
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;
}
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;
}
相关文章推荐
- 请教:JSP里如何实现下拉组合框,既能从列表中选择也能自由输入,同时输入时自动定位到与已输字符最相符的列表项?
- 在字符串中输入回车换行或其它特殊字符
- MySQL客户端如何忽略已经输入的多行命令,让其不执行!
- Web.Config如何输入特殊字符
- 如何判断输入的字符是中英文
- UTF8编码格式的中英文字符如何换行
- android 中如何限制 EditText 最大输入字符数
- 终端控制——如何在不输入回车读入字符
- android 中如何限制 EditText 最大输入字符数
- CEdit如何设置让Edit框中可以输入任意多个字符
- 如何查询Google忽略的关键字(常用字词和字符)
- 如何控制不让用户在comboBox的框里输入字符,只能从下拉框中选择?
- 如何用python在图片中输入西里尔文字符
- 如何跨浏览器使用连续字符的换行
- C如何同时输入字符和数字
- 在java中如何用键盘输入一个数,字符,字符串
- 将用户输入的字符串转换为可换行、替换Html编码、无危害数据库特殊字符、去掉首尾空白、的安全方便代码
- C++如何输入含有空格字符的字符串
- 如何跨浏览器使用连续字符的换行
- 如何在Python的.py文件里输入中文字符