如何修复“分段错误(核心已转储)”?

时间:2019-10-10 23:39:10

标签: c

对此是新手,并尝试编写代码以查找带有头文件的2个数字之间的最大值和最小值。我很确定我做错了,所以如果有人可以帮助我,那将非常有帮助

#include <stdio.h>
#include <maxmin.h>
int main()
{

    //declare variables
    float maximum;
    float minimum;
    float n1;
    float n2;

    //get numbers
    printf("Enter two numbers:");
    scanf("%f%f",&n1,n2);

    //call functions
    maximum= max(n1, n2);
    minimum= min(n1, n2);

    //print results
    printf("maximum= %f\n", max);
    printf("minimum= %f\n", min);
    return 0;
}

这是头文件:

// function to find max
float max(float n1, float n2)
{
    return(n1>n2) ? n1 : n2;
}

//function to find min
float min(float n1, float n2)
{
    return(n1 > n2) ? n2 : n1;
}

1 个答案:

答案 0 :(得分:1)

当您尝试访问非法内存时导致分段错误。造成这种情况的一些常见原因是尝试访问不存在的数组的索引(例如,尝试访问仅包含两个元素的数组中的第三个元素)或尝试访问尚未初始化的变量。有关详细说明,请参见this答案。

在您的情况下,您正在尝试访问未初始化的变量。

这些行...

printf("Enter two numbers:");
scanf("%f%f",&n1,n2);

对此...

printf("Enter two numbers:");
scanf("%f%f",&n1,&n2);

您在&之一前面缺少n2

并更改这些行...

printf("maximum= %f\n", max);
printf("minimum= %f\n", min);

成为这个...

printf("maximum= %f\n", maximum);
printf("minimum= %f\n", minimum);

在您的代码中,maxmin是在maxmin.h中定义的函数,而maximumminimum是您在初始化时写入的变量正在计算最大值和最小值。