发布网友 发布时间:2022-06-03 15:51
共1个回答
热心网友 时间:2023-11-09 06:21
解决办法,将输入行改为:
测试结果:
Please input ch1,a,d:相关原因:
scanf_s是微软编译器为安全起见增加的,与scanf有一定区别。
重要的区别在于:对于格式c, C, s, S,scanf_s要求在变量存贮指针后面,紧跟一个缓冲区大小的整数。
例如单个字符:
char c;字符串:
char c[4];关于这类函数更多内容,请参见:
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
微软解释: http://msdn.microsoft.com/en-us/library/w40768et.aspx
追问谢谢大神 再问一下为什么VS不能用scanf啊 还有我同学WIN8用的VC++6.0调试可以,也是一运行就停止工作 是怎么回事啊追答我稍微查了下,因为scanf() 在读取数据时不检查边界,由此可能造成安全隐患, 所以MS在vs2005版本及更高级版本中就建议使用scanf_s()来代替scanf()函数。
vc++ 6.0 中肯定是没有scanf_s()函数的,建议使用scanf();另外在win 8下可能兼容性有问题,还是装一个vs2012或vs2013吧。
这个问题可能需要更多的调查,你如果有兴趣的话,可以查看:
http://www.cnblogs.com/AI-Algorithms/p/3388017.html
http://faculty.edcc.e/paul.bladek/CS131/scanf_s.htm