问题描述
一段时间以来,我一直在尝试克隆一个猜谜游戏程序。我在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
尝试写入内存地址0x539
(1337
的十六进制)。
将行更改为
scanf("%d \n",&guess);
您会没事的。