VS2022,想写一个通讯录,假设最开始容量是3,超过3就增容,往文件里写的时候写第四个写入成功,关闭之后再运行显示的就出错了是为啥
void CheckCapacity(Contact* pc)
{
if (pc->count == pc->capacity)//如果空间不够,增容
{
PeoInfo* ptr = (PeoInfo*)realloc(pc->data, (pc->capacity + INT_SZ) * sizeof(PeoInfo));
if (ptr == NULL)
{
printf("扩容失败\n");
return;
}
else
{
pc->data = ptr;
pc->capacity += INT_SZ;
printf("增容成功\n");
}
}
}
void LoadContact(Contact* pc)
{
FILE* pfRead;
errno_t err = fopen_s(&pfRead, "C:\\C语言\\test_24_3_6\\test.txt", "rb");
if (pfRead == NULL)
{
perror("LoadContact");
return;
}
PeoInfo tmp = { 0 };
while (fread(&tmp, sizeof(PeoInfo), 1, pfRead) == 1)
{
//增容
CheckCapacity(pc);
pc->data[pc->count] = tmp;
pc->count++;
}
fclose(pfRead);
pfRead = NULL;
}