【发布时间】:2016-07-29 23:38:16
【问题描述】:
当我在以下程序中scanf() 函数的格式字符串中不包含%d 和%c 规范之间的空格,并在运行时将输入输入为“4 h”时,则输出是“整数 = 4 和字符 = 。
在这种情况下,变量"c" 究竟是如何接受输入的?如果我在%d 和%c 规范之间包含一个空格,它有什么区别?
代码
#include <stdio.h>
int main()
{
char c;
int i;
printf("Enter an Integer and a character:\n");
scanf("%d %c",&i,&c);
printf("Integer = %d and Character = %c\n",i,c);
getch();
}
【问题讨论】:
-
@petercordes 我打开了这个,因为我认为这是我再次遇到的另一种情况,即将
%c没有前面的空格放在一行上,没有关于“缓冲区中的换行符”的问题"所以有点不同。 -
@AnttiHaapala:我想我将它作为scanf() leaves the new line char in the buffer 的副本关闭了,因为最终的问题是相同的:
%c本身(与其他转换不同)将读取一个空格,如果那是下一个字符。但是格式字符串中的文字空间会消耗任意数量的空格。不过,重新开放很好;这里的答案很好。
标签: c character scanf format-specifiers