【问题标题】:C function program not workingC函数程序不工作
【发布时间】:2014-11-10 09:41:21
【问题描述】:
#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();
}

这里我有一段非常简单的代码,用于选择所需的功能,但是,在运行该程序时,我输入“ActChoice”后它会崩溃。

我不知道这是我的代码中的错误,还是更下方的代码,但它似乎在扫描时中断了。

编辑:我忘了 & ,我实际上是弱智

【问题讨论】:

    标签: c function input


    【解决方案1】:

    更改scanf("\n%d",ActChoice);

    到:scanf("\n%d",&amp;ActChoice);

    scanf() 需要一个指向变量的指针。

    【讨论】:

      【解决方案2】:

      你的scanf 声明应该是这样的:

      scanf("\n%d",&ActChoice);
      

      您缺少&amp;

      【讨论】:

        【解决方案3】:

        scanf("\n%d",ActChoice); 更改为scanf("\n%d",&amp;ActChoice); scanf() 需要存储输入数据的变量地址。

        详情请查看scanf() 的手册页。

        【讨论】:

          【解决方案4】:

          改变scanf("\n%d",ActChoice);到 scanf("\n%d",&ActChoice);因为发送给 scanf 的值是 ActChoice 的地址。 第二个参数 (&ActChoice) 指定将放置类型化响应的变量。在这种情况下,响应将被放入与变量 ActChoice 关联的内存位置。

          【讨论】:

            【解决方案5】:

            当通过 scanf 接收输入时,您需要在整数变量 ActChoice 的名称前加上 & 号,因为它需要一个地址。您的代码应如下所示:

            scanf("\n%d", &ActChoice);
            

            【讨论】:

              【解决方案6】:

              您的程序不会崩溃。它只是不知道将您提供的输入存储在哪里。只需在 scanf 语句中的 ActChoice 之前添加一个 & 即可解决它。

              您的 scanf 语句应如下所示,

              scanf("\n%d",&ActChoice);

              【讨论】:

              • your program doesn't crash 是什么意思?
              • @SouravGhosh 他在他的问题中指出他的程序崩溃了。它实际上并没有崩溃它只是关闭了。(如果我错了,我是 c 兄弟,请纠正我)
              • 是的,它确实崩溃了。原因是试图访问不允许进程访问的内存区域。提示:ActChoice = 0;
              【解决方案7】:

              c 程序中的 Scanf 需要存储数据的地址。在你的情况下,你已经给了

              scanf("\n%d",ActChoice);
              

              行动选择 = 0 所以scanf会尝试将值存储在位置零,这实际上是一个程序内存,所以我会导致段错误。 同样的程序可能在程序存储器与数据存储器不同的哈佛架构中工作。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2022-08-13
                • 1970-01-01
                • 2020-11-02
                • 1970-01-01
                • 2017-07-27
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多