C程序接受两个字符

时间:2015-12-30 16:44:38

标签: c scanf

我试图创建一个连续接受两个字符然后打印它们的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()语句。为什么会这样?

3 个答案:

答案 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之前使用空格指示忽略任何空格(空格,制表符,换行符等)。

进一步阅读:What does space in scanf mean

答案 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}}