求大神!VS2013下写了个电话本,编译连接都可以就是运行时会挂!

图片说明

这是函数代码
void add_peo(Pcon pcon)
{
if (pcon->count <= MAX_PEO)
{
printf("请输入姓名:");
scanf_s("%s", pcon->nb[pcon->count].name);
printf("请输入年龄:");
scanf_s("%d", &pcon->nb[pcon->count].age);
printf("请输入性别:");
scanf_s("%s", pcon->nb[pcon->count].sex);
printf("请输入电话:");
scanf_s("%s", pcon->nb[pcon->count].tele);
printf("请输入地址:");
scanf_s("%s", pcon->nb[pcon->count].addr);
pcon->count++;
printf("添加成功!\n");
}
else
printf("电话本已满!");
}

有错吗??

  • 你的name是什么类型的?如果是char * 或者tchar * 的话,你需要先分配内存,

这种错误,一般是指针操作越界了。
请检查:
1) 数组的下标是否越界?例如:nb 数组的维数的最大值是否是 MAX_PEO
2) 如果是指针,是否分配了空间?例如:pcon

我猜测

 if (pcon->count <= MAX_PEO)  //改为  pcon->count < MAX_PEO

pcon->nb[pcon->count].name
这个空间有多大,你输入的是否越界了