在用C编写的这个超级简单的程序中,不会让我读取“ char”类型的变量吗?

时间:2018-11-12 21:54:55

标签: c char printf scanf

这个用C语言编写的 easy 代码不起作用,我不明白为什么。如果我只读“ n”,或者只读“ ch”,那么它可以工作,否则,如果我尝试同时读取它们,则不会让我读“ ch”。会发生什么,我该如何运作?

#include <stdio.h>

int main()
{
    int n;
    char ch;

    printf("n=");
    scanf("%d",&n);
    printf("ch="); //when i press Build and Run it won't let me read "ch"??? why?
    scanf("%c",&ch);
    return 0;
}

1 个答案:

答案 0 :(得分:2)

使用%d读取数字时,输入缓冲区中将保留换行符。然后,当您使用%c读取字符时,它将立即读取换行符,因此不会提示您进行更多输入。

%d格式说明符会丢弃任何前导空格一样,%c格式说明符不会。

%c之前添加一个前导空格以消耗所有剩余的空格:

scanf(" %c",&ch);