gpt4 book ai didi

c - SIGSEGV 短 C 代码错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:42 26 4
gpt4 key购买 nike

因此,作为 C 的新手,我遇到了我的第一个 SIGSEGV 错误。它出现在一个简短的 C 程序中,该程序旨在成为“猜数字”游戏。它由一个比较两个数字的自定义函数和一个带有输入的 do-while 循环组成。开始和 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
}

我怀疑错误出在函数中,是由于未使用指针引起的,但据我了解指针,它们在这里似乎没有必要:我没有更改函数中的单个变量,并且返回只减去两个值(我假设是给定的)。

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

最佳答案

这个:

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

应该是:

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

专业提示:始终在启用警告的情况下进行编译(例如 gcc -Wall ...),编译器会很乐意指出诸如此类的简单错误,从而为您节省大量时间和痛苦。

关于c - SIGSEGV 短 C 代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com