#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char firstName[20];
char lastName[20];
int id;
char gender[10];
int monthOfBirth;
int dayOfBirth;
int yearOfBirth;
} HealthProfile;
void setName(HealthProfile *HP) {
char firstName;
char lastName;
printf("Enter your first and last name: ");
scanf("%s" "%s", &firstName, &lastName);
HP->firstName = firstName;
HP->lastName = lastName;
}
void setID(HealthProfile *HP) {
int id;
printf("Enter ID: ");
scanf("%d", &id);
HP->id = id;
}
void setGender(HealthProfile *HP) {
char gender;
// HealthProfile hp;
// strcpy(hp.gender, &gender);
printf("Enter your gender: ");
scanf("%s", &gender);
HP->gender = gender;
}
void setBD(HealthProfile *HP) {
int monthOfBirth;
int dayOfBirth;
int yearOfBirth;
printf("Enter your month of birth, day of birth and year of birth: ");
scanf("%d" "%d" "%d", &monthOfBirth, &dayOfBirth, &yearOfBirth);
HP->monthOfBirth = monthOfBirth;
HP->dayOfBirth = dayOfBirth;
HP->yearOfBirth = yearOfBirth;
}
int main(){
// pointer declared to HealthProfile structure
HealthProfile *HP;
// pointer initialized using malloc
HP = (HealthProfile*) malloc(sizeof(HealthProfile));
// Calls various functions
setID(HP);
setGender(HP);
setName(HP);
setBD(HP);
// Creates your profile
printf("Creating your Health Profile! \n");
printf("Profile created for: %s\n", HP->firstName);
printf("Lastname: %s\n", HP->lastName);
// prints ID
printf("ID: %d\n", HP->id);
printf("Gender: %s\n", HP->gender);
printf("Month of birth: %d\n", HP->monthOfBirth);
printf("day of birth: %d\n", HP->dayOfBirth);
printf("year of birth: %d\n", HP->yearOfBirth);
}
То, что я пытаюсь сделать, это назначить HP на строку, но я получаю эту ошибку.
array type 'char [10]' is not assignable
HP->gender = gender;
(та же ошибка, что и с именем и фамилией, конечно). Поэтому я поискал в Интернете и обнаружил, что нельзя назначить char, и вместо него следует использовать strcpy. Как вы можете видеть по моей неудачной попытке в функции пола.
Может кто-нибудь помочь мне исправить мои ошибки? Спасибо