#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
int ActChoice=0;
//do
//{
printf("What Activity were you doing?");
printf("\n1. Running" );
printf("\n2. Swimming");
printf("\n3. Cycling" );
scanf("\n%d",ActChoice);
/*if(ActChoice == 1)
{
RunEdit();
}
else if(ActChoice == 2)
{
SwimEdit();
}
else if(ActChoice == 3)
{
CyclEdit();
}*/
//}
// while(1==1);
getch();
}
这里我有一段非常简单的代码,用于选择所需的功能,但是,在运行此程序时,它会在我输入&#34; ActChoice&#34;之后崩溃。
我不知道这是我在我的代码中出现的错误,还是代码进一步下降,但它似乎在扫描中断了。
编辑:我忘记了&amp; ,我实际上是迟钝的
答案 0 :(得分:2)
将scanf("\n%d",ActChoice);
更改为scanf("\n%d",&ActChoice);
scanf()
需要存储输入数据的变量地址。
有关详细信息,请查看scanf()
的手册页。
答案 1 :(得分:2)
您的scanf
声明应该是这样的:
scanf("\n%d",&ActChoice);
您错过了&
。
答案 2 :(得分:2)
更改scanf("\n%d",ActChoice);
于:scanf("\n%d",&ActChoice);
scanf()
期待指向变量的指针。
答案 3 :(得分:1)
更改scanf(&#34; \ n%d&#34;,ActChoice); scanf(&#34; \ n%d&#34;,&amp; ActChoice);因为发送到scanf的值是ActChoice的地址。 第二个参数(&amp; ActChoice)指定将放置类型响应的变量。在这种情况下,响应将被放入与变量ActChoice相关联的内存位置。
答案 4 :(得分:1)
当通过scanf接收输入时,您需要在整数变量ActChoice的名称前面加一个&符号,因为它需要一个地址。您的代码应如下所示:
scanf("\n%d", &ActChoice);
答案 5 :(得分:0)
你的程序没有崩溃。它只是不知道你在哪里存储输入。只需添加一个&amp;在scanf语句中的ActChoice之前解决它。
你的scanf语句应如下所示,
的scanf(&#34; \ n%d&#34;,&安培; ActChoice);
答案 6 :(得分:0)
c程序中的Scanf需要存储数据的地址。在你的情况下,你给了
scanf("\n%d",ActChoice);
ActChoice = 0 所以scanf会尝试将值存储在零位,这实际上是一个程序存储器,所以我会导致段错误。 这个程序可能适用于哈佛架构,程序存储器与数据存储器不同。