c-为什么下面的代码不接受所有输入

  • 本文关键字:不接受 代码 c input
  • 更新时间 :
  • 英文 :

#include <stdio.h>
int main()
{
int a;
float b;    
char ch;

scanf("%d%f%c",&a,&b,&ch);
printf("%d %f %c",a,b,ch);
return 0;
}

每当我运行超过代码

它只需要两个输入并终止为什么?我想输入:2,3.5,d,但它在3.5之后终止。

这是我运行代码时的图像:https://i.stack.imgur.com/ef6CE.png

在格式字符串中包含空格。否则,任何空白字符(空格、换行符和制表符(都将被读入变量中。因此,在%c之前包含一个空格,如下所示:

scanf("%d%f %c",&a,&b,&ch);

我认为问题在于在"%之间没有空格f";和%c〃;转换说明符,并且在"%"之后没有它f";scanf((使用换行符作为给定字符。

这可能对你有帮助https://man7.org/linux/man-pages/man3/scanf.3.html

事实上,我在"%f";和"%c";,下面的程序似乎正在运行https://www.onlinegdb.com/online_c_compiler

#include <stdio.h>
int main()
{
int a;
float b;    
char ch;
scanf("%d%f %c",&a,&b,&ch);
printf("%d %f %c",a,b,ch);
return 0;
}

此外,如果使用括号'printf("(%d %f %c)",a,b,ch);打印数据,您将看到换行符的消耗。

原始程序的输出,没有%f之间的空白,%c:

2
3.5
(2 3.500000 
)

已编辑程序的输出,在%f和%c:之间有空格

2
3.5
x
(2 3.500000 x)

最新更新