2

我现在开始学习 C,我试图弄清楚当用户点击“输入”时我将如何捕捉。我特别关注 scanf 和 getc 函数,但我不太确定如何去做。当用户点击回车时,我想在等待/观看他再次点击回车时执行一些操作......“输入”是来自控制台的换行符吗?任何建议将不胜感激!

4

4 回答 4

3

您可以使用 fgetc() 检查 ascii 值。

while(condition) {
    int c = fgetc(stdin);

    if (c==10) {//Enter key is pressed
    //your action
    }
}
于 2012-04-06T23:04:10.677 回答
1

如果您只需要在用户按 enter 作为输入时输入,您可以使用scanfor getchar。这是来自cplusplus.com的示例

/* getchar example : typewriter */
#include <stdio.h>

int main ()
{
  char c;
  puts ("Enter text. Include a dot ('.') in a sentence to exit:");
  do {
    c=getchar();
    putchar (c);
  } while (c != '.');
  return 0;
}

此代码将您输入的内容打印到标准输入(终端窗口)。

但是,如果您不想要输入(我知道对于新学习者来说这确实是不必要且复杂的),您应该使用事件处理程序。

于 2012-04-06T23:08:58.507 回答
1
printf("Hit RETURN to exit"\n");
fflush(stdout);
(void)getchar();

参考:comp.lang.c 常见问题列表 · 问题 19.4b

于 2012-04-06T23:17:37.637 回答
0

C 语言是独立于平台的,它本身没有任何键盘交互。当您编写控制台程序时,控制台会处理键盘输入,然后将其作为标准输入传递给您的程序。控制台输入/输出通常是缓冲的,因此您无法对单个按键做出反应,因为控制台仅在每行之后将输入发送到程序。

然而!<conio.h>如果您不要求控制台应用程序独立于平台,则在某些 Windows 编译器中有一个非标准库,getche();它有一个名为char被按下。

于 2012-04-06T23:10:46.250 回答