注册 登录
编程论坛 C语言论坛

scanf_s输入为啥总是异常中断?来自第三世界的呼唤

拼尽全力 发布于 2019-09-08 09:36, 2864 次点击
[local]1[/local]
[local]1[/local]

#include <stdio.h>
int main(void)
{
    int a1,a2;
    char c1,c2;
    scanf_s("%d%c%d%c",&a1,&c1,&a2,&c2);
    printf("%d,%c,%d,%c",a1,c1,a2,c2);
    return 0;
}
比如我输入:12a34b他就给我异常中断。。。。。

[此贴子已经被作者于2019-9-8 14:59编辑过]

8 回复
#2
zbjzbj2019-09-08 10:00
把scanf_s()换成scanf(),用dev c编译器运行,按你说的输入12a34b完全没问题
只有本站会员才能查看附件,请 登录

vs编译器不允许scanf()

[此贴子已经被作者于2019-9-8 17:00编辑过]

#3
自学的数学2019-09-08 17:36
用dev c编译器时,将scanf_s换成scanf,就可以了。
#4
c小白23332019-09-08 21:25
不要改项目属性里面的SDL检查
改成这样


 scanf_s("%d%c%d%c", &a1, &c1,1, &a2, &c2,1);

就可以了


[此贴子已经被作者于2019-9-8 22:15编辑过]

#5
c小白23332019-09-08 21:57
建议几个可以看看的网址
希望会对你有所帮助
https://blog.
https://bbs.
#6
c小白23332019-09-08 22:18
回复 4楼 c小白2333
一开始我改了项目属性里面的SDL检查为否
结果总是运行出问题
汗  找了好久才发现不能改。。。
#7
bcbbcclbbc2019-09-10 10:52
回复 5楼 c小白2333
学到了,scanf_s与标准库scanf()多了一个限制性输入的条件,以防止数据输入不合理导致程序的其他位置出错
#8
forever742019-09-10 17:05
scanf_s("%d%c%d%c",&a1,&c1,&a2,&c2);
应该写作
scanf_s("%d%c%d%c",&a1,&c1,1,&a2,&c2,1);
对每个%c或%s格式符,后面要对应两个参数,其中多出来的那个表示以字符为单位的长度。
#9
LTao2019-09-10 21:02
用scanf
刚开始时scanf_s 用的较少
1