我正在尝试从控制台读取字符(在while循环内)。但它读取的不止一次。
输入:
a
输出:
char : a char : char : '
代码:
while(..)
{
char in;
scanf("%c",&in);
}
我怎么只能读'a'?
scanf("%c",&in);
留下换行符,在下一次迭代中使用。
将其更改为:
scanf(" %c",&in); // Notice the whitespace in the format string
告诉scanf忽略空格。
OR
scanf(" %c",&in);
getchar(); // To consume the newline
要只读取一个字符,请改用getchar:
int c = getchar();
if (c != EOF)
printf("%c\n", c);
在scanf("%c",&in);
中,您可以在%c
之后添加换行符\n
以吸收多余的字符
scanf("%c\n",&in);
您可以始终使用char a = fgetc (stdin);
。非常规,但工作原理类似于getchar()
。
您可以这样做。
char *ar;
int i=0;
char c;
while((c=getchar()!=EOF)
ar[i++]=c;
ar[i]='\0';
这样,您创建了一个字符串,但实际上它是一个char数组。