SIGSEGV短C代码错误

0 c pointers function segmentation-fault

所以,作为一个对C很新的人,我遇到了我的第一个SIGSEGV错误.它出现在一个简短的C程序中,意在是一个"猜数字"游戏.它由一个自定义函数组成,它将两个数字和一个do-while循环与一个输入进行比较.start和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
}
Run Code Online (Sandbox Code Playgroud)

比较功能:

//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
}
Run Code Online (Sandbox Code Playgroud)

我怀疑错误是在函数中,由于缺少指针的使用而导致,但据我理解指针,它们似乎没有必要在这里:我不改变函数中的单个变量,并返回只减去两个值(我假设给出).

我希望我的错误不是太愚蠢,我要感谢所有可以提供帮助或尝试的人.(我可以发布我的处理器值,尽管我不确定这是否有帮助;如果需要更多信息进行调试,请告诉我)

Pau*_*l R 5

这个:

    scanf("%d",input); //Get input
Run Code Online (Sandbox Code Playgroud)

应该:

    scanf("%d",&input); //Get input
              ^^^
Run Code Online (Sandbox Code Playgroud)

专业提示:总是在启用警告的情况下进行编译(例如gcc -Wall ...),编译器会愉快地指出这样的简单错误,为您节省大量时间和悲伤.