尝试循环数组时在C中获取异常错误

时间:2012-10-27 18:07:29

标签: c

//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 个答案:

答案 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]的值。这是未定义的,因此将指向内存中不可预测且可能不可写的位置。