输入值未写入数组

时间:2013-07-14 05:19:18

标签: c arrays calloc

我正在研究我认为是一个简单的程序来尝试和熟悉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。

1 个答案:

答案 0 :(得分:2)

%d格式说明符适用于int s。对于double s use %lf with scanf and %f or %lf with printf

scanf("%lf", &q);
printf("%f", q); // confirms q = "input"