用C读取单个字符

问题描述 投票:11回答:5

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

输入:

a

输出:

char : a  char : char : '

代码:

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

我怎么只能读'a'?

c scanf
5个回答
31
投票
scanf("%c",&in);

留下换行符,在下一次迭代中使用。

将其更改为:

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

告诉scanf忽略空格。

OR

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

6
投票

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

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

2
投票

scanf("%c",&in);中,您可以在%c之后添加换行符\n以吸收多余的字符

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

0
投票

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


-1
投票

您可以这样做。

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

这样,您创建了一个字符串,但实际上它是一个char数组。

© www.soinside.com 2019 - 2024. All rights reserved.