我正在尝试找出从用户那里获取整数和字符的最佳方法
这是我到目前为止所拥有的:
#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;
}
输出未正确显示。这有什么问题吗?
答案 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);