C功能程序无法正常工作

时间:2014-11-10 09:41:21

标签: c function input

#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; ,我实际上是迟钝的

7 个答案:

答案 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会尝试将值存储在零位,这实际上是一个程序存储器,所以我会导致段错误。 这个程序可能适用于哈佛架构,程序存储器与数据存储器不同。