0

我正在研究我认为是一个简单的程序来尝试熟悉 C 风格的代码(与我习惯的 C++ 相比),并且遇到了障碍。

我已经使用 为数组分配了内存calloc,并希望用户只需输入一个数字,然后将该数字放入数组中(重复此操作直到数组完全填充)。数组似乎已经创建,但我的代码没有写入数组。程序在运行时接受输入,将该输入存储到临时变量 q(用于调试目的),但不会将该临时变量的值写入数组。

这是我认为解决我问题的代码片段:

//e is the size of array as indicated by user
values = (double *)calloc(e , sizeof(double));
double q = 0; // holds input just to make sure it works
for (int i = 0; i < e; i++)
{
    printf("Please enter value %d: ",i+1);
    scanf("%d", &q);
    printf("%d", q); // confirms q = "input"
    values[i] = q; //This isn't happening for me
} 

如果有人能纠正(并最好解释)我关于为什么values[i]永远不等于 q 的错误,我将不胜感激。

4

1 回答 1

2

格式说明%d符用于ints。对于doubles与 scanf 和与 printf 一起使用%lf%f%lf

scanf("%lf", &q);
printf("%f", q); // confirms q = "input"
于 2013-07-14T05:21:29.273 回答