我正在尝试从控制台读取一个字符(在while循环中)。但它不止一次地读过。
输入:
a
输出:
char : a char : char : '
代码:
while(..)
{
char in;
scanf("%c",&in);
}
我怎么才能只读'a'?
答案 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数组。