所以,作为一个相当陌生的人,我遇到了我的第一个SIGSEGV错误。 它出现在一个简短的C程序中,意在是一个“猜数字”游戏。它由一个自定义函数组成,它将两个数字和一个do-while循环与一个输入进行比较。 开始和执行循环:
#include<stdio.h>
int checkNum(int num1, int num2); //See below for explanation
int main(void) {
int input=0, rand=3; //"Random" number has fixed value for testing
do {
printf("Enter number from 0-10: "); //There is not actual range yet
scanf("%d",input); //Get input
} while(checkNum(input, rand)); //Checks if difference != 0
}
比较功能:
//Function for comparing input with "random" number
int checkNum(int num1,int num2) { //The two numbers that get compared; First one: input, Second one: "random" rumber
if(num1==num2) {
printf("Correct. The random number was %d",num2);
} else if(num1<num2) {
printf("Wrong. The random number is bigger.");
} else if(num1>num2) {
printf("Wrong. The random number is smaller.");
}
return num2-num1; //Return the difference, leads to 0 if equal
}
我怀疑错误是在函数中引起的,因为缺少指针的使用,但据我理解指针,它们似乎没有必要在这里:我不改变函数中的单个变量,并且返回仅减去两个值(我假设给出)。
我希望我的错误不是太愚蠢,我要感谢所有可以提供帮助或尝试的人。 (我可以发布我的处理器值,尽管我不确定这是否有帮助;如果需要更多信息进行调试,请告诉我)
答案 0 :(得分:5)
此:
scanf("%d",input); //Get input
应该是:
scanf("%d",&input); //Get input
^^^
专业提示:始终在启用警告的情况下进行编译(例如gcc -Wall ...
),编译器会愉快地指出这样的简单错误,为您节省大量时间和精力。