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("%d", &userNums[x]); //code won't crash now
于 2013-07-28T17:43:02.247 回答
1

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

例子:

 int i;

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

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

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

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

&前面的运算符userNums[x]给出地址来scanf存储用户输入的数据。在没有&操作员的情况下(在这种情况下)scanf找不到存储输入值的地址,因此您的程序将崩溃。

于 2013-07-28T17:48:35.080 回答
0

只是改变

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

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

scanf 需要一个指针才能改变它的值

于 2013-07-28T17:44:36.063 回答
0

你必须这样称呼scanf()

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

说明:您想scanf()将用户给定的值分配给变量。由于在 C 中参数是通过副本传递的,因此您需要将变量的地址传递给scanf()以便它可以修改它。要检索变量的地址,请使用&运算符:therefor &userNums[x]

于 2013-07-28T17:49:03.363 回答