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

如何在C中提示用户从键盘输入整数和字符,c,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

我试图找出从用户那里获得整数和字符的最佳方法

以下是我到目前为止的情况:

#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;
}
#包括
int main()
{
INTA;
字符b;
printf(“输入第一个数字:\n”);
scanf(“%d”和“&a”);
printf(“输入第二个字符:\n”);
scanf(“%c”和“b”);
printf(“编号%d”,a);
printf(“字符%c”,b);
返回0;
}
输出显示不正确。这有什么问题吗?

输入号码后,按enter键。由于
scanf
函数对输入流起作用,当您在读取数字后尝试处理下一个
char
时,您读取的不是您键入的字符,而是前面的
'\n'
字符。(也就是说,因为在键入
字符之前,您按下的Enter键在输入流中添加了一个
'\n'
字符)

您应该使用以下命令将第二次调用更改为
scanf

scanf(" %c", &b);
请注意,在格式化字符串中添加了空格字符。格式化字符串中的初始空格有助于跳过中间的任何空格


此外,您可能希望在所进行的两次
printf
调用的格式字符串末尾添加
\n
,以获得更好的输出格式。

输入号码后,按enter键。由于
scanf
函数对输入流起作用,当您在读取数字后尝试处理下一个
char
时,您读取的不是您键入的字符,而是前面的
'\n'
字符。(也就是说,因为在键入
字符之前,您按下的Enter键在输入流中添加了一个
'\n'
字符)

您应该使用以下命令将第二次调用更改为
scanf

scanf(" %c", &b);
请注意,在格式化字符串中添加了空格字符。格式化字符串中的初始空格有助于跳过中间的任何空格


此外,您可能希望在所做的两个
printf
调用的格式字符串末尾添加
\n
,以获得更好的输出格式。

您的输入和输出语句很好。只需替换printf(“数字%d”,a)带有
printf(“编号%d\n”,a)
以更好地格式化输出。您还应该将第二条scanf语句更改为
scanf(“%c”和&b)。这将处理输入数字后输入的换行符。

您的输入和输出语句很好。只需替换printf(“数字%d”,a)带有
printf(“编号%d\n”,a)
以更好地格式化输出。您还应该将第二条scanf语句更改为
scanf(“%c”和&b)。这将处理输入数字后输入的换行符。

这里您需要处理隐藏字符'\n',方法是在scanf()函数中的%c之前提供空格,这样“STDIN”缓冲区将被清除,scanf将等待“STDIN”缓冲区中的新字符


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

这里需要处理隐藏字符“\n”,方法是在scanf()函数中的%c之前提供空格,以便清除“STDIN”缓冲区,scanf将等待“STDIN”缓冲区中的新字符

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

新行字符(按enter键)是隐藏的重影:)新行字符(按enter键)是隐藏的重影:)