我试图创建一个连续接受两个字符然后打印它们的C程序,但我在输出中出现了一些异常。
该计划
#include<stdio.h>
int main()
{
char c1, c2;
printf("\n Enter two characters : ");
scanf("%c%c", &c1, &c2);
printf("\n The the characters are %c and %c ", c1, c2);
return 0;
}
输出
输入两个字符:a
字符为a和
在没有要求第二个字符的输出中,它直接转到下一个printf()
语句。为什么会这样?
答案 0 :(得分:1)
尝试
#include<stdio.h>
int main()
{
char c1, c2;
printf("\n Enter two characters : ");
scanf(" %c %c", &c1, &c2);
printf("\n The the characters are %c and %c ", c1, c2);
return 0;
}
%c
之间的空格消耗了左上角的新行\n
字符。
答案 1 :(得分:1)
使用以下内容:
scanf(" %c %c", &c1, &c2);
/* ^ ^ */
在第一个字符后按回车键时,'\n'
中会读取b
。在%c
之前使用空格指示忽略任何空格(空格,制表符,换行符等)。
答案 2 :(得分:0)
在%c
函数中的scanf()
之间添加一个空格。当你按下输入例如。在第一次输入\n
后,c1
会将c2
存储在您的案例中%c
。通过在 #include<stdio.h>
int main()
{
char c1, c2;
printf("\n Enter two characters : ");
scanf("%c %c",&c1,&c2);
printf("\n The the characters are %c and %c ", c1, c2);
return 0;
}
指令之间使用空格来忽略任何空格(空格,制表符,换行符等)。
{{1}}