如何从C中的结构打印指针变量?

时间:2019-04-17 21:24:36

标签: c

我需要在结构内打印出一个指针变量。我假设我必须取消引用,但不确定如何才能获得分段错误。

struct HealthProfile{ //structure with pointers to all needed variables.
    char *name;
    char *last;
    char *gender;
    struct date *dob;
    float *height;
    float *weight;
};

void readData(){
    float height;
    printf("What is your name?\n");
    scanf("%s", &H.name); //scan
    //H.name = name;
    printf("What is your last name? \n");
    scanf("%s", &H.last);
    //H.last = last;
    printf("What is your Height name? \n");
    scanf("%f", &H.height);


    printf("Height: %f\n", *(H.height));
    //printf("First Name: %s\n", H->name);
    //printf("Last Name: %s\n", H->last);
}

我希望它打印出扫描的高度,这是浮点数。

1 个答案:

答案 0 :(得分:0)

首先,您需要声明float height;,而不是声明struct HealthProfile H;。更好的是,声明struct HealthProfile profile;并将H替换为profile

接下来,修复您的scanf()语句。例如

scanf("%s", &H.name);

应该是

scanf("%s", profile.name);

类似地改变

scanf("%f", &H.height);

scanf("%f", profile.height);

现在您对printf()的语法是正确的。

但是,由于没有为您的指针分配任何内存,您仍然会遇到问题。namelast字段声明为指针很有意义。但是,我认为您应该声明float height;float weight;而不是对这些值使用指针。如果这样做,那么使用scanf()运算符的原始&语句将是正确的。