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 ...),编译器会高兴地指出这样的简单错误,为您节省大量时间和悲伤。

+0

非常感谢您的快速帮助;问题解决了,但是让我困惑的是,我的c编辑器(“Dev-cpp”,C++和c编译器)中的“调试”功能似乎也会导致sigsegv;但它停止出现,现在正常工作。 –