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&読み取り結果を配置する変数の前にaが必要です。数週間でその理由がわかります。

于 2012-10-27T18:09:52.963 に答える
1

scanf行を次のように変更する必要があると思います

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

ユーザー入力を書き込むには、int のアドレスを渡す必要があります。現在のコードは の値を渡しますcosts[i]。これは未定義であるため、メモリ内の予測不可能な、おそらく書き込み不可能な場所を指します。

于 2012-10-27T18:10:35.943 に答える