使用scanf输入字符串时报错
描述: 程序如图所示,定义了一个结构体数组,结构体中的name是用来储存字符串的,在主函数中,使用scanf_s对结构体的name赋值,实际运行过程中,每次输字符串的时候都会报错,求教是哪里写的... 程序如图所示,定义了一个结构体数组,结构体中的name是用来储存字符串的,在主函数中,使用scanf_s对结构体的name赋值,实际运行过程中,每次输字符串的时候都会报错,求教是哪里写的不对了,还是说跟我使用的scanf_s有关系?软件是vs 2015图总共四张,点击箭头可以看其他两张 展开
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这个参数编辑时间 2019-01-13 12:17:25