在C中读取单个字符

g3d*_*g3d 11 c scanf

我正在尝试从控制台读取一个字符(在while循环中).但它不止一次地读过.

输入:

a
Run Code Online (Sandbox Code Playgroud)

输出:

char : a  char : char : '
Run Code Online (Sandbox Code Playgroud)

码:

while(..)
{
    char in;
    scanf("%c",&in);
}
Run Code Online (Sandbox Code Playgroud)

我怎么才能读'a'?

P.P*_*.P. 30

scanf("%c",&in);
Run Code Online (Sandbox Code Playgroud)

留下在下一次迭代中消耗的换行符.

将其更改为:

scanf(" %c",&in); // Notice the whitespace in the format string
Run Code Online (Sandbox Code Playgroud)

告诉scanf忽略空格.

要么

scanf(" %c",&in);
getchar(); // To consume the newline 
Run Code Online (Sandbox Code Playgroud)


Dou*_*las 6

要只读取一个char,请使用getchar:

int c = getchar();
if (c != EOF)
  printf("%c\n", c);
Run Code Online (Sandbox Code Playgroud)