我需要在结构内打印出一个指针变量。我假设我必须取消引用,但不确定如何才能获得分段错误。
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);
}
我希望它打印出扫描的高度,这是浮点数。
答案 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()
的语法是正确的。
但是,由于没有为您的指针分配任何内存,您仍然会遇到问题。将name
和last
字段声明为指针很有意义。但是,我认为您应该声明float height;
和float weight;
而不是对这些值使用指针。如果这样做,那么使用scanf()
运算符的原始&
语句将是正确的。