如何提示用户从C键盘输入整数和字符

时间:2018-08-31 05:06:32

标签: c

我正在尝试找出从用户那里获取整数和字符的最佳方法

这是我到目前为止所拥有的:

#include <stdio.h>
int main()
{
    int a;
    char b;
    printf("enter the first number: \n");
    scanf("%d", &a);
    printf("enter the second char: \n");
    scanf("%c", &b);

    printf("Number %d",a);
    printf("Char %c",b);
    return 0;
}

输出未正确显示。这有什么问题吗? enter image description here

3 个答案:

答案 0 :(得分:3)

您的输入和输出语句很好。只需将printf("Number %d",a);替换为printf("Number %d\n",a);即可更好地格式化输出。另外,您还应该将第二个scanf语句更改为scanf(" %c", &b);。这将处理输入数字后输入的换行符。

答案 1 :(得分:2)

输入数字后,按 Enter 键。由于scanf函数在输入 stream 上起作用,因此当您在读取数字后尝试处理下一个char时,您不是在读取键入的字符,而是在{前面有{1}}个字符。 (即,因为您按下的 Enter 键在您输入'\n'之前在输入流中添加了'\n'字符)

您应使用以下命令将第二个呼叫更改为char

scanf

注意格式字符串中添加的空格字符。格式字符串中的初始空格有助于跳过两者之间的任何空格。

另外,您可能希望在所进行的两个scanf(" %c", &b); 调用的格式字符串的末尾添加\n,以得到更好的输出格式。

答案 2 :(得分:0)

在这里,您需要通过在scanf()函数中的%c之前提供空格来照顾隐藏字符'\ n',以便清除“ STDIN”缓冲区,并且scanf将等待“ STDIN”中的新字符“缓冲区。

在您的程序中修改此语句:scanf(“%c”,&b);到scanf(“%c”,&b);