Непонятная ошибка C

При отладке, код в самом конце выдаёт такую ошибку(скрин). Пытался гуглить, вроде похоже на утечку памяти, но как исправить не пойму. Спасибо. Ошибка


struct person {
    char lastName[15];
    char firstName[15];
    char age[2];
};

int main()
{
    FILE* filePtr;

    filePtr = fopen("nameage.txt", "wb");

    if (filePtr == NULL)
        fprintf(stderr, "File couldn't open.");
    else
    {
        struct person blankPerson = { "unassigned", "", "0" };

        for (int i = 0; i < 100; i++)
            fwrite(&blankPerson, sizeof(struct person), 1, filePtr);

        struct person person;

        puts("Enter LastName, FirstName, Age.");
        puts("Enter EOF to stop.");
        
        printf("?\t");
        scanf("%s%s%s", &person.lastName, &person.firstName, person.age);

        int start = 1;
        while (!feof(stdin))
        {
            fwrite(&person, sizeof(struct person), 1, filePtr);
            printf("?\t");
            scanf("%s%s%s", &person.lastName, &person.firstName, person.age);
        }
        rewind(filePtr);

        fclose(filePtr);
    }

    return 0;
}

Ответы (1 шт):

Автор решения: KoVadim

В тексте программы - классические ошибки.

scanf("%s%s%s", &person.lastName, &person.firstName, person.age);

%s требует указателя, а ему подсовывают адрес указателя. Самое интересное, что age вводится правильно. Удалите эти амперсанды.

Также вызывает большой вопрос объявление age как char[2]. Таким образом можно будет ввести возраст только от 0 до 9 - завершающий ноль то нужен.

struct person person; - это нормальная сишная штука.

→ Ссылка