【发布时间】:2018-04-09 01:10:53
【问题描述】:
这只是一个简单的 C 程序来显示从用户那里获取的数组元素,但是我想知道为什么在尝试打印数组时会得到垃圾值...如果有人可以提供帮助,我将不胜感激...谢谢!
#include <stdio.h>
#include <stdlib.h>
double *array_dou;
double* initializeDoubles(int *maxdouble)
{
printf("Enter the max. double value the program should support: ");
scanf("%d",maxdouble);
array_dou = (double *) malloc((*maxdouble)*sizeof(double));
if(array_dou == NULL)
{
printf("Error! memory not allocated.");
exit(-1);
}
return array_dou;
}
int enterDouble(double *doubles,int dcount,int maxdouble)
{
for(dcount=0; dcount<maxdouble; dcount++)
{
printf("Please enter a double value: ");
scanf("%f",&doubles[dcount]);
}
return dcount;
}
int main()
{
int maxdouble;
int dcount=0;
double *doubles;
doubles = initializeDoubles(&maxdouble);
dcount = enterDouble(doubles,dcount,maxdouble);
printf("\nDouble array\n");
for(int j=0;j<dcount;j++)
{
printf("%lf ",doubles[j]);
}
return 0;
}
【问题讨论】:
-
看起来您只要求用户提供一个双倍,而不是 N。
-
另外,如果
doubles是一个双精度数组,则scanf("%f",&doubles[dcount]);是错误的;你想要%lf。 (我自己没有注意到这一点,但我的编译器注意到了,并警告了它——我想知道你的为什么没有?) -
你只收到了一个双打[0]。并使用 %lf 而不是 %f 作为双精度数。
-
已经有答案的请不要更新代码!如果您删除答案正在评论的代码,则答案没有意义。