因为循环在C中崩溃

时间:2013-07-28 17:40:11

标签: c for-loop codeblocks scanf

编辑:哇。我遗漏了'&'在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...

5 个答案:

答案 0 :(得分:1)

修正:

scanf("%d", &userNums[x]); //code won't crash now

答案 1 :(得分:1)

Scanf在stdin上读取并将结果放在第二个参数中。它必须是一个指针,因为该函数将获取您发送的变量的副本。

示例:

 int i;

 scanf("Enter a number here : %d", &i);
 printf("number is %d", i);

答案 2 :(得分:1)

永远记住scanf()的参数必须是地址(指针)。在您的情况下,userNums[x]需要&运算符。改变

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

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

userNums[x]运算符将地址提供给scanf以存储用户输入的数据。如果没有&运算符(在这种情况下)scanf,则找不到存储输入值的地址,因此程序将崩溃。

答案 3 :(得分:0)

只需更改

 scanf("%d", userNums[x]); //code crashes here

 scanf("%d", &userNums[x]); //code crashes here

scanf需要一个能够改变其值的指针

答案 4 :(得分:0)

您必须以这种方式致电scanf()

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

解释:您希望scanf()将用户指定的值分配给变量。由于C 参数是按副本传递的,因此您需要将变量的地址传递给scanf(),以便它可以修改它。要检索变量的地址,请使用&运算符:因此&userNums[x]