SIGSEGV短C代码错误

时间:2015-10-01 16:13:07

标签: c function pointers sigsegv

所以,作为一个相当陌生的人,我遇到了我的第一个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
}

我怀疑错误是在函数中引起的,因为缺少指针的使用,但据我理解指针,它们似乎没有必要在这里:我不改变函数中的单个变量,并且返回仅减去两个值(我假设给出)。

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

1 个答案:

答案 0 :(得分:5)

此:

    scanf("%d",input); //Get input

应该是:

    scanf("%d",&input); //Get input
              ^^^

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