如何多次读取循环中的回车键?
我尝试了以下但没有结果。
char c;
for (i=0; i<n; i++){
c = getchar ();
fflushstdin ();
if (c == '\n'){
//do something
}
}
和fflushstdin:
void fflushstdin (){
int c;
while ((c = fgetc (stdin)) != EOF && c != '\n');
}
如果我读取任何其他字符而不是输入键,它可以完美地工作,但是使用回车键在某些迭代中我必须按下输入2次。
感谢。
编辑:我正在通过putty在Windows上执行程序,程序运行在虚拟盒上的虚拟化Linux薄膜上。答案 0 :(得分:4)
你为什么叫fflushstdin()?如果fgetc()返回与\ n不同的内容,则该字符将被完全删除。
这应该有效:
char prev = 0;
while(1)
{
char c = getchar();
if(c == '\n' && prev == c)
{
// double return pressed!
break;
}
prev = c;
}
答案 1 :(得分:2)
尝试
if (ch == 13) {
//do something
}
enter的ASCII值为13,有时\ n不起作用。
答案 2 :(得分:0)
你应该选择:
char c;
for (i=0; i<n; i++){
c = getchar ();
fflushstdin ();
if (c == 13){
//do something
}
}
因为13
是Enter
密钥的ASCII代码。
答案 3 :(得分:0)
您总是执行getchar
两次(即使没有必要)。尝试限制对fflushstdin
的调用:
char c;
for (i=0; i<n; i++){
c = getchar ();
if ((c != EOF) && (c != '\n')) fflushstdin ();
if (c == '\n'){
//do something
}
}