在C中循环读取输入键
如何多次读取循环中的回车键?
我试过以下但没有结果。
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薄膜上。
你为什么叫fflushstdin()? 如果fgetc()返回与\ n不同的内容,则该字符将被完全删除。
这应该工作:
char prev = 0; while(1) { char c = getchar(); if(c == '\n' && prev == c) { // double return pressed! break; } prev = c; }
尝试
if (ch == 13) { //do something }
enter的ASCII值为13,有时\ n不起作用。
你应该去:
char c; for (i=0; i
因为13
是Enter
键的ASCII码。
你总是执行两次getchar
(即使没有必要)。 尝试限制对fflushstdin
调用:
char c; for (i=0; i