我遇到了一个简单的问题,我的 C 可执行文件在尝试从用户那里获取输入后崩溃了。
该程序的想法是填充一个数组并最终在该数组上生成一些数据。到目前为止,我已经尝试在 exe 崩溃后立即获取用户的输入。我还临时编辑了代码,同时尝试调试问题所在但没有成功。我已经很多年没接触过 c 了,上次接触时我还很年轻,是个新手。
有人可以就崩溃原因提出任何可能的解决方案吗?
#include <stdio.h>
#include <stdbool.h>
double get_double(char prompt[50])
{
double tempDouble = 0;
printf("%s", prompt);
scanf("%d", tempDouble);
return tempDouble;
}
void populate_array(double *pData[])
{
int i = 0;
*pData[0] = get_double("Please Enter A Number : ");
//for(i = 0; i < sizeof(*pData); i++)
//{
//*pData[i] = get_double("Please Enter A Number : ");
//}
}
double get_sum(double data[10])
{
int i = 0;
double result = 0;
for (i = 0; i < sizeof(data); i++)
{
result += data[i];
}
return result;
}
int main()
{
//Variable Declarations
bool running = true;
bool playAgain = false;
double numbers[10];
double sum, min, max, var, dev;
//Process
populate_array(&numbers);
sum = get_sum(numbers);
printf("%d",sum);
}
最佳答案
void populate_array(double *pData[])
接受一个指针数组,而你只传递一个数组,它应该是:
void populate_array(double pData[])
{
int i = 0;
pData[0] = get_double("Please Enter A Number : ");
}
另外,当你阅读双倍时,它应该是:
// as proposed by Jonathan, the format string should contain '%lf' for double, I overlooked it.
scanf("%lf", &tempDouble);
如果您只传递 scanf
tempDouble
,它会将其值视为地址,这当然是无效地址。
关于c - 非常简单的 C 程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10630801/