首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >几个getchar调用

几个getchar调用
EN

Stack Overflow用户
提问于 2011-11-30 03:31:31
回答 2查看 55关注 0票数 1

我有一个VS 10控制台应用程序,它必须接受两个字符输入,并根据它们的值进行一些处理。我编写了以下代码:

代码语言:javascript
复制
char c1,c2;
printf("Ener c1:");
c1 = getChar();
//Some desicion is made based on c1
printf("Ener c2:");
c2 = getChar();
//Some desicion is made based on c2

使用以下命令运行它:

代码语言:javascript
复制
Ener c1:y
Ener c2:S

在此执行之后,c1的值为'y'c2的值为'\n',如何解决?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-30 03:33:51

当你从cin中得到一个字符时,用户在技术上按下字符:'y‘,然后回车,或者'\n’。

\n在缓冲区中,因此您应该在第一个getchar之后刷新缓冲区以删除\n。尝试使用cin.ignore();

PS:我会读这篇文章,并重新思考你在做什么:

How do I flush the cin buffer?

票数 2
EN

Stack Overflow用户

发布于 2011-11-30 03:36:17

当您输入'y‘并按enter键时,您的应用程序收到2个字符,它收到'y’和'\n‘( enter键。一个简单的解决方案是循环,直到有另一个字符,而不是\n或EOF:

代码语言:javascript
复制
while ((c2 = getchar()) != '\n' && c != EOF);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8316594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档