//Program Written By: Andre Chitsaz-zadeh
//Program Written On: 10/7/12
//Program calculates book cost for multiple book orders. Program written using multiple functions.`
#include <stdio.h>
#define SIZE 5
void inputData();
int main ()
{
inputData();
}
void inputData()
{
int i = 0;
int costs[5];
printf( "\nPlease enter five products costs.\n" );
while(i < 5)
{
scanf("%d", costs[i]);
i = i + 1;
}
}
为什么会出现异常错误?该程序看起来很简单!它编译没有问题,但只要我输入一个数字就说“这个程序已经停止工作”。谢谢!
答案 0 :(得分:4)
scanf("%d", costs[i]);
应该是:
scanf("%d", &costs[i]);// &cost[i] gets the address of the memory location you want to fill.
答案 1 :(得分:2)
应该是
while(i < 5) {
scanf("%d", &costs[i]);
i = i + 1;
}
我假设有点错字,无论如何你需要提供要扫描整数的数组元素的地址。
答案 2 :(得分:1)
我猜这就是这句话:
scanf("%d", costs[i]);
应该是:
scanf("%d", &costs[i]);
scanf
需要一个指向变量的指针,在该变量中应该放置读取结果。
这看起来像是一个家庭作业问题,从关于该程序的评论判断有多种功能。如果函数是新的,那么可能还没有涵盖指针。在这种情况下,请将我的解释读作:
scanf
在变量之前需要&
才能放入读取结果。你会在几周内了解原因。
答案 3 :(得分:1)
我认为您需要将scanf
行改为
scanf("%d", &costs[i]);
您需要传递int的地址才能写入用户输入。您当前的代码会传递costs[i]
的值。这是未定义的,因此将指向内存中不可预测且可能不可写的位置。