0

編集:うわー。scanf 関数の「&」を省略しました。でも助けてくれてありがとう。

私は Code::Blocks を使用しており、ユーザーに 10 個の数字を入力して表示する簡単なプログラムを作成しようとしています。問題は、質問を出力することですが、数字を入力すると、以下の scanf()... コードで割り当てる代わりにクラッシュします。

main()
{
  int userNums[11] = {0};
  int x;
  char displayOrder = '\0';

  for (x = 0; x <= 10; x++)
  {
    printf("Enter a number: ");
    scanf("%d", userNums[x]); //code crashes here
  }
//code continues...
4

5 に答える 5

1

scanf()の引数はアドレス (ポインター) でなければならないことを常に覚えておいてください。あなたの場合、演算子userNums[x]が必要です。&変化する

scanf("%d", userNums[x]);

scanf("%d", &userNums[x]);

&の前の演算子は、ユーザーが入力したデータを格納するためuserNums[x]のアドレスを指定します。演算子がない場合 (この場合) scanf、入力値を格納するアドレスが見つからないため、プログラムがクラッシュします。&scanf

于 2013-07-28T17:48:35.080 に答える
1

修理:

scanf("%d", &userNums[x]); //code won't crash now
于 2013-07-28T17:43:02.247 に答える
1

Scanf は stdin を読み取り、その結果を 2 番目の引数に入れます。関数は送信した変数のコピーを取得するため、ポインターである必要があります。

例:

 int i;

 scanf("Enter a number here : %d", &i);
 printf("number is %d", i);
于 2013-07-28T17:44:14.967 に答える
0

この方法で呼び出す必要がありますscanf():

scanf("%d", &userNums[x]);

scanf()説明:ユーザーが指定した値を変数に割り当てたいとします。C では、パラメーターはコピーによって渡されるscanf()ため、変数を変更できるように、変数のアドレスを渡す必要があります。変数のアドレスを取得するには、&演算子を使用します&userNums[x]

于 2013-07-28T17:49:03.363 に答える