Ошибка памяти при попытке скопировать структуру, возвращенную из функции, в структуру внутри массива - PullRequest
0 голосов
/ 07 июня 2019

createPerson () возвращает struct, person - указатель на массив person указатели структуры, (personNode **). пытаясь скопировать возвращение createPerson () to personNode [x], ошибка памяти.

people[length - 1]->age = createPerson(name, age)->age;
strcpy(people[length - 1]->name, createPerson(name, age)->name);
typedef struct personNode
{
    char name[20];
    int age;
    struct personNode* next;
}personNode;

personNode* createPerson(char name[], int age)
{
    personNode* person = (personNode*)malloc(sizeof(personNode));

    strcpy(person->name, name);
    person->age = age;

    return person;
}

  void addPerson(personNode** people, int length)
{
int i = 0;
    int age = 0;
    char* name = 0;

    people = (personNode**)realloc(people, sizeof(personNode*) * length + 1);
    name = (char*)realloc(name, 20);
    printf("Enter name: ");
    fgets(name, 20, stdin);
    name[strcspn(name, "\n")] = 0;
    printf("Enter age: ");
    scanf("%d", &age);
    getchar();
    people[length - 1]->age = createPerson(name, age)->age;
    strcpy(people[length - 1]->name, createPerson(name, age)->name);

Ожидается, что не произойдет сбой, произошел сбой.

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