【发布时间】:2019-11-18 15:14:15
【问题描述】:
我在我的计算机课上学习 C,今天我们被介绍给 scanf。这是用于引入scanf的代码行:
#include <stdio.h>
void main()
{
float x,y;
scanf("%f %f",&x,&y);
printf("%2f\n",x+y);
}
这很好用,如果你输入两个数字,它会打印总和。 我认为它可能像 pythons 输入函数一样工作,所以我修改了上面的代码,在 scanf 中包含一些文本,如下所示:
#include <stdio.h>
void main()
{
float x,y;
scanf("insert no in format x y %f %f",&x,&y);
printf("%2f\n",x+y);
}
我得到的输出不是 10,而是一些随机数。我说随机,因为我尝试多次运行代码,每次收到不同的输出。
这与内存分配有关吗? scanf 可以不是字符串吗?
【问题讨论】:
-
scanf无法读取这些数字。x和y未修改。它们是尚未初始化的自动变量。因此它们包含垃圾。 -
查看
scanf的返回值。如果读取了两个数字,则应该是 2。 -
你能做到吗?或者你必须在scanf之前用“insert no in format...”调用printf?
-
"我认为它可能像 pythons 输入函数一样工作" --> 一个好的猜测,但是因为它没有工作,所以节省了我们所有的时间。阅读Linux man page 的其他文档。