0
//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;
    }
}

为什么会出现异常错误?该程序看起来很简单!它编译没有问题,但只要我输入一个数字,它就会说“这个程序已经停止工作”。谢谢!!

4

4 回答 4

4
scanf("%d", costs[i]);

应该:

scanf("%d", &costs[i]);// &cost[i] gets the address of the memory location you want to fill.
于 2012-10-27T18:09:30.237 回答
2

它应该是

while(i < 5) {
    scanf("%d", &costs[i]);   
    i = i + 1;
}

我假设有点错字,无论如何您需要提供要扫描整数的数组元素的地址。

于 2012-10-27T18:15:56.727 回答
1

我猜是这条线:

scanf("%d", costs[i]);

它应该是:

scanf("%d", &costs[i]);

scanf需要一个指向应该将读取结果放入其中的变量的指针。


这看起来像一个家庭作业问题,从关于该程序的评论来看具有多种功能。如果函数是新的,那么指针可能还没有被覆盖。在这种情况下,请阅读我的解释:

scanf需要&在变量之前放置读取结果。您将在几周内了解原因。

于 2012-10-27T18:09:52.963 回答
1

我认为您需要将您scanf的线路更改为

scanf("%d", &costs[i]);

您需要传递 int 的地址才能将用户输入写入其中。您当前的代码传递costs[i]. 这是未定义的,因此将指向内存中不可预测且可能不可写的位置。

于 2012-10-27T18:10:35.943 回答