的scanf()不会提示输入标准输入
#include <stdio.h>
int main(void) {
float base, height, hyp;
printf("input base of triangle:\n");
scanf("%f", base);
printf("input height of triangle:\n");
scanf("%f", height);
printf("input hypotenuse of triangle:\n");
scanf("%f", hyp);
float perimeter = base + height + hyp;
printf("the perimeter of your triangle is: %f\n", perimeter);
return 0;
}
我通过ideone.com运行此,它显示了成功,那么标准输入为空,则在标准输出它打印不带数字我所有的print语句的scanf()不会提示输入标准输入
scanf
需要一个指针数据类型,您应该使用&
通过您的变量的地址:
scanf("%f", &base);
scanf("%f", &height);
scanf("%f", &hyp);
要添加一些错误检查可能是有用的,是这样的:
if(scanf("%f", &base) != 1) //number of items scanned is expected to be 1
//process error..
//etc
...并添加代码以检查扫描是否成功,然后依赖具有适当值的变量 – unwind
@ 4386427当scanf失败时返回负值 –
@GillBates:否则返回扫描的项目数。输入不是一个浮点数,它返回0.通过验证结果是否与期望的项目数完全一致来检查是否成功。 –
这是因为ideone是而不是的互动。不像在命令行中运行程序,ideone需要你提供所有的前期投入在“输入”选项卡:
你需要运行程序之前输入的所有数据。
P.S.一旦你这样做,注意你有没有未定义的行为,因为你传递的值是scanf
而不是指针。解决这个问题的最好方法是在编译C代码时选择“C99 strict”选项。这将打破你的编译以下警告:
prog.c:7:11: error: format '%f' expects argument of type 'float *', but argument 2 has type 'double' [-Werror=format=]
scanf("%f", base);
'的scanf( “%F”,基地);' - >'的scanf( “%F”,&base);' – BLUEPIXY
ideone永远等待你的输入,键入所有输入到标准输入框中 – Danh
在运行程序之前在输入**中键入内容,您将得到类似于'运行时错误\t时间:0内存:2172信号:11',因为您错误地调用了'scanf'。 – 4386427