为什么我的代码中出现了分段错误?

时间:2018-01-03 09:37:55

标签: c

这是一个非常简单的代码,当我运行它时,它允许我输入int,但是当我输入它时,程序崩溃了。我尝试在scanf之后放一个printf来检查程序是否正确读取了int,似乎它没有。我无法输出我输入的整数。

#include <stdio.h>
#include <math.h>

void coolfunction(int x, int *y)
{
    *y = exp(x);
}

int main()
{
    int n;
    double result = 0;

    printf("Enter an integer: ");
    scanf("%d", n);

    coolfunction(n, &result);

    printf("\n e^%d = %lf \n", n, result);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

这是一个使用双参数的版本:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void coolfunction(int x, double *y)
{
    *y = exp(x);
}

int main()
{
    int n = 0, scanned = 0;
    double result = 0;

    printf("Enter an integer: ");
    scanned = scanf("%d", &n);
    if (scanned < 1) {
        fprintf(stderr, "value entered not a valid integer\n");
        exit(EXIT_FAILURE);
    }
    coolfunction(n, &result);
    printf("\n e^%d = %g \n", n, result);
    return 0;
}

您还错过了&来电中的scanf:该函数需要知道变量的地址,而不是其值。