printf("name = "); scanf_s("%s", pArr[i].name); 直接录入会引发如下错误: 原因分析: 相比于scanf,scanf_s会在要求录入字符串的时候指定数组的缓冲区的大小。1个缓冲区也就是1024字节,只要大于一就好啦。 解决方案: 更改后的代码: printf("name = "); scanf_s("%s", pArr[i].name,1); 问题即可解决。