【发布时间】:2013-01-03 09:42:53
【问题描述】:
我正在尝试从控制台读取一个字符(在 while 循环内)。但它不止一次读取。
输入:
a
输出:
char : a char : char : '
代码:
while(..)
{
char in;
scanf("%c",&in);
}
我怎样才能只读“a”?
【问题讨论】:
我正在尝试从控制台读取一个字符(在 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 忽略空格。
或
scanf(" %c",&in);
getchar(); // To consume the newline
【讨论】:
n 使用malloc 2) 将字符读入数组,直到它不超过n 3) 如果@ 987654327@ 字符被读取,并且您希望使用realloc 读取两倍以上的数组大小。一般采用这种方法是为了避免调用 realloc 过于频繁。否则,您可以使用您喜欢的大小进行重新分配。
要只读取一个字符,请改用getchar:
int c = getchar();
if (c != EOF)
printf("%c\n", c);
【讨论】:
在scanf("%c",&in); 中,您可以在%c 之后添加换行符\n 以吸收多余的字符
scanf("%c\n",&in);
【讨论】:
你可以这样做。
char *ar;
int i=0;
char c;
while((c=getchar()!=EOF)
ar[i++]=c;
ar[i]='\0';
这样,你创建了一个字符串,但实际上它是一个字符数组。
【讨论】:
你总是可以使用char a = fgetc (stdin);。非常规,但与getchar() 一样工作。
【讨论】: