我有一个VS 10控制台应用程序,它必须接受两个字符输入,并根据它们的值进行一些处理。我编写了以下代码:
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使用以下命令运行它:
Ener c1:y
Ener c2:S在此执行之后,c1的值为'y',c2的值为'\n',如何解决?
发布于 2011-11-30 03:33:51
当你从cin中得到一个字符时,用户在技术上按下字符:'y‘,然后回车,或者'\n’。
\n在缓冲区中,因此您应该在第一个getchar之后刷新缓冲区以删除\n。尝试使用cin.ignore();
PS:我会读这篇文章,并重新思考你在做什么:
发布于 2011-11-30 03:36:17
当您输入'y‘并按enter键时,您的应用程序收到2个字符,它收到'y’和'\n‘( enter键。一个简单的解决方案是循环,直到有另一个字符,而不是\n或EOF:
while ((c2 = getchar()) != '\n' && c != EOF);https://stackoverflow.com/questions/8316594
复制相似问题