scanf_s(" %d %c %d",&a,&b,&c)每次运行总会出错

mike_33 2016-09-20 06:07:31

代码感觉没错,也能正常运行,但是输入完 1 c 2,按Enter健结束,就会被异常终止!
试验了很多次,发现scanf_s("%d %c",&a,&b)读取%d 之后再读%c就会发生这种情况。
请教大神,是不是scanf_s()哪里我用错了?还是其他什么原因?
int main(void)
{
int a=0,c=0; char b=0;
scanf_s(" %d %c %d",&a,&b,&c);
printf("a=%d b=%c c=%d",a,b,c);
return 0;
}

...全文
968 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2016-09-21
  • 打赏
  • 举报
回复
高版本的VS都会让你用scanf_s来替代scanf
1.可以:Alt+F7,打开工程属性,然后找到图片上标注的地方,添加一行内容_CRT_SECURE_NO_DEPRECATE就OK了
2.如果用scanf_s,在读入%c或者%s的时候必须多传入一个参数用来指定读取的长度,否则会出错
赵4老师 2016-09-21
  • 打赏
  • 举报
回复
#pragma warning(disable:4996)
...
paschen 2016-09-20
  • 打赏
  • 举报
回复
scanf_s中%c还需要一个参数,表示长度 如果不想加,就用scanf
encoderlee 2016-09-20
  • 打赏
  • 举报
回复
scanf_s(" %d %c %d",&a,&b,1,&c);
dustpg 2016-09-20
  • 打赏
  • 举报
回复
微软的_s对于字符串要求传入缓存长度, 不会用_s就用原版...反正连警告都不看: C4477 “scanf_s”: 格式字符串“%c”需要类型“unsigned int”的参数,但可变参数 3 拥有了类型“int *”

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧