c语言 - 如何阻止程序读取"Enter"作为输入?



大家好,我刚刚完成了我的程序,它读取任何单个字符并打印该字符的ASCII值,但是当它循环时,它开始继续读取enter以及其他字符。

我的另一个问题是我希望我的程序在读取'#'时停止并将其打印为无效,我似乎无法做到。代码看起来像这样:

#include <stdio.h>
int main() {
  char input;
  while (input != '#') {
    printf("nEnter character: n");
    scanf("%c*c", & input);
    printf("The ASCII value is: %d", (int) input);
    if (input == '#') break;
  }
  printf("n# is invalid");
  return (0);
}

您试图用

抑制换行符
scanf("%c*c", & input);

但是你忘记了抑制中的%

scanf("%c%*c", & input);

可以在第一个格式说明符之后添加空白。它使程序读取任何空白(包括Enter),但不存储它。

scanf("%c ", & input);

这在下一页中有清楚的解释。请参阅"参数"部分,并转到标题为"空白字符"的段落。

http://www.cplusplus.com/reference/cstdio/scanf/

CORRECTION我的意思是,如果我们在像下面这样的情况下在两个格式说明符之间使用空格,那么它会"吃掉"Enter或其他空格。我的错,在我上面的语句中,它会继续要求更多的空白,因为我们在所有格式说明符

之后使用空白。
scanf("%c %d", &input1,&input2);

尝试fflush(stdin);后扫描

最新更新