SIGSEGV短C代码错误
问题描述:
因此,作为C相当新手的人,我遇到了我的第一个SIGSEGV错误。 它出现在一个简短的C程序中,意思是“猜数字”游戏。它由一个自定义函数组成,该函数将两个数字和一个do-while循环与内部输入进行比较。 开始和do-while循环:SIGSEGV短C代码错误
#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
}
我怀疑的错误是在功能,造成丢失的使用指针,但作为就我所了解的指针而言,它们在这里似乎并不必要:我不会在函数中更改单个变量,并且返回值只会减去两个值(这是我假设的)。
我希望我的错误不是太愚蠢,我要感谢所有能够帮助或尝试的人。 (我可以张贴我的处理器值,altough我不知道是否会有所帮助;如果需要调试的任何详细信息,请告诉我)
答
此:
scanf("%d",input); //Get input
应该是:
scanf("%d",&input); //Get input
^^^
专业提示:始终编译时启用警告(例如gcc -Wall ...
),编译器会高兴地指出这样的简单错误,为您节省大量时间和悲伤。
非常感谢您的快速帮助;问题解决了,但是让我困惑的是,我的c编辑器(“Dev-cpp”,C++和c编译器)中的“调试”功能似乎也会导致sigsegv;但它停止出现,现在正常工作。 –