使用scanf输入字符串时报错 20

程序如图所示,定义了一个结构体数组,结构体中的name是用来储存字符串的,在主函数中,使用scanf_s对结构体的name赋值,实际运行过程中,每次输字符串的时候都会报错... 程序如图所示,定义了一个结构体数组,结构体中的name是用来储存字符串的,在主函数中,使用scanf_s对结构体的name赋值,实际运行过程中,每次输字符串的时候都会报错,求教是哪里写的不对了,还是说跟我使用的scanf_s有关系?软件是vs 2015
图总共四张,点击箭头可以看其他两张
展开
 我来答
MrAllRight
2018-09-13 · TA获得超过2362个赞
知道大有可为答主
回答量:3639
采纳率:50%
帮助的人:2183万
展开全部
scanf_s需要指定缓冲区长度,你试试

scanf_s("%s", pstu[i].name, 10);
追问
基本可以确定是scanf_s的锅了,我换了visual c++编译这个程序,把scanf_s改成了scanf,运行完全正常,没有报错,然后按照你说的的在vs 2015那个程序里指定了缓冲区长度,运行也正常了。我还有一个额外的问题,scanf_s这个缓冲区是什么机制,还有scanf_s("%s", pstu[i].name, 10);这段代码,是不是只有在处理字符串数组时,才会用到10这个参数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式