#include<stdio.h>
#include<conio.h>
void main()
{
char c;
int i;
clrscr();
scanf("%c",&c);
scanf("%c",&c);
printf("%c",c);
getch();
}
该程序第二次不接受char c的值,但在整数变量的情况下它可以正常工作。为什么这样?
答案 0 :(得分:1)
在%c
之前添加额外的空格:
scanf(" %c",&c);
这是因为在之前的scanf
中,您输入了字符,然后输入了换行符\n
。因此,在第一个scanf
中,存储了字符,而在第二个scanf
中存储了换行符。
或者,您可以使用getchar
存储换行符。在第二个getchar()
之前和第一个scanf
之后添加scanf
。
答案 1 :(得分:1)
这是因为当你输入第一个字符时,你可能会用换行符结束它,并且该换行符仍在输入缓冲区中,因此下一个scanf
调用将读取该换行符。因此,当您打印它时,它会打印换行符。
您可以通过在格式scanf
之前添加单个空格来告诉" %c"
丢弃主要空格。