在 c 中使用指针时如何解决分段错误问题?

问题描述 投票:0回答:1
#include<stdio.h>
void main(){
    float p1,p2;
    float *x,*y;
    printf("Enter the co-ordinates (x,y) : ");
    scanf("%f%f",p1,p2);
    x = &p1;
    y = &p2;
    printf("The co-ordinates(%f,%f) lies in quadrant ",*(x),*(y));
    if(*x == 0 && *y ==0) {
        printf("It is the origin.");
        return;
    }
    if(*x > 0 && *y > 0){
        printf("1");
    }
    else if(*x < 0 && *y > 0){
        printf("2");
    }
    else if(*x < 0 && *y < 0){
        printf("3");
    }
    else printf("4");
    return ;
}

此代码抛出错误“Segmentation Fault”。 谁能帮帮我?

我试图将值分配给普通变量,然后将指针分配给该变量的地址。但它会抛出同样的错误。

c pointers segmentation-fault
1个回答
1
投票

线

scanf("%f%f",p1,p2);

错了。

%f
scanf()
期望 pointers
float
变量,所以它应该是

scanf("%f%f",&p1,&p2);

检查输入失败更好。

if (scanf("%f%f",&p1,&p2) != 2){
    puts("failed to read values");
    return;
}
© www.soinside.com 2019 - 2024. All rights reserved.