0

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


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;

}

  • Попробуйте вместо struct person писать просто person, например: person blankPerson = { "unassigned", "", "0" }; – gil9red Jul 22 '20 at 02:06
  • 2
    Во-первых, вот это struct person person; вызывает подозрение. Лучше назовите структуру и объект по-разному, хотя бы для читаемости кода. Во-вторых, вопрос: компилируете как код С или С++? – V-Mor Jul 22 '20 at 02:11
  • Вводите что-то, превышающее по размеру строку, в которую вводите. 2. Неверно обрабатываете конец файла - так while (!feof(stdin)) делать нельзя - см. https://ru.stackoverflow.com/q/833980/195342
  • – Harry Jul 22 '20 at 05:02
  • Так это цэ или цэ++? Большая часть кода как будто бы на цэ, но часть на цэ++ – dIm0n Jul 22 '20 at 05:59