Как напечатать указатель переменной из структуры в C? - PullRequest
0 голосов
/ 18 апреля 2019

Мне нужно распечатать указатель переменной внутри структуры.Я предполагаю, что я должен отменить ссылку, но я не уверен, как без получения ошибки сегментации.

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 голосов
/ 18 апреля 2019

Прежде всего, вместо объявления 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() с оператором & будут правильными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...