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