在C中读取单个字符

时间:2013-01-19 23:18:32

标签: c scanf

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

输入:

a

输出:

char : a  char : char : '

代码:

while(..)
{
    char in;
    scanf("%c",&in);
}

我怎么才能只读'a'?

5 个答案:

答案 0 :(得分:29)

scanf("%c",&in);

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

将其更改为:

scanf(" %c",&in); // Notice the whitespace in the format string

告诉scanf忽略空格。

OR

scanf(" %c",&in);
getchar(); // To consume the newline 

答案 1 :(得分:6)

要只阅读一个字符,请改用getchar

int c = getchar();
if (c != EOF)
  printf("%c\n", c);

答案 2 :(得分:2)

scanf("%c",&in);

您可以在%c换行符\n之后添加以吸收额外的字符

scanf("%c\n",&in);

答案 3 :(得分:0)

您始终可以使用char a = fgetc (stdin);。非常规,但工作原理类似于getchar()

答案 4 :(得分:-1)

你可以这样做。

char *ar;
int i=0;
char c;
while((c=getchar()!=EOF)
   ar[i++]=c;
ar[i]='\0';

以这种方式,你创建一个字符串,但实际上它是一个char数组。