分段错误核心已转储-无法找出我失败的地方

问题描述

一段时间以来,我一直在尝试克隆一个猜谜游戏程序。我在c方面经验很少我已经搜索了此错误并阅读了有关该错误的信息。我已经了解了这里的基本问题。但是我不能把它和我的节目联系起来。我在这里看不到任何错误。你能帮我吗

segmentation fault (core dumped) -这是我遇到的错误


#include<stdio.h>

int main() {

  int snum = 7;
  int guess;
  int guesscount = 0;
  int guesslimit = 3;
  int outofguesses = 0;
  while (guess != snum && outofguesses == 0) {
    if (guesscount < guesslimit) {
      printf(" Enter the number : ");
      scanf("%d \n",guess);
      guesscount++;

    } else {
      outofguesses = 1;
    }
  }

  if (outofguesses == 1) {
    printf("You have Failed dude");
  } else {
    printf("Congrats man you won ");

  }
}

解决方法

通常,分段错误意味着您正在尝试访问不应该访问的内存。

在您的情况下,您尝试将scanf直接转换为变量,而scanf则采用一个地址。尝试将&符号(&)与guess一起使用。

,

您的问题就在这

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

您必须传递scanf的内存地址(指向变量的指针)才能写入。 (&guess

但是您将其传递给C / C ++解释为内存地址的整数(guess

如果guess等于1337,则scanf尝试写入内存地址0x5391337的十六进制)。

将行更改为

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

您会没事的。