我的代码有问题。 我正在创建一个动态数组并要求一些值。 但是当我在屏幕上打印它们时,数组似乎未初始化。
int main(void)
{
int i, j;
double *p;
printf("How much numbers?\n");
scanf("%d", &i);
p = malloc (sizeof(double)*i);
for(j = 0; j < i; j++)
{
printf("Set nr. %d :\n", j);
scanf("%f", p+j);
}
for(j = 0; j < i; j++)
{
printf("Nr. %d = %f\n", j, *(p+j));
}
}
我认为问题应该出在这一行,但我不明白为什么?
scanf("%f", p+j);
我也尝试过这个版本的代码:
scanf("%f", (p+j));
scanf("%f", &p[j]);
谢谢!
最佳答案
读取 double 的格式说明符错误:
scanf("%f", p+j);
使用 %lf
读取 double :
scanf("%lf", p+j);
您可能会感到困惑,因为 printf() 使用 %f
来打印 float
和 double
而 scanf() 需要不同的格式说明符。阅读这篇文章:
Why does scanf() need "%lf" for doubles, when printf() is okay with just "%f"?
关于c - 数组/指针和 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898463/