scanf在c语言中错误,scanf_s(" %d %c %d",&a,&b,&c)每次运行总会出错

代码感觉没错,也能正常运行,但是输入完 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;

}

解决方案

9

微软的_s对于字符串要求传入缓存长度, 不会用_s就用原版…反正连警告都不看:

C4477 “scanf_s”: 格式字符串“%c”需要类型“unsigned int”的参数,但可变参数 3 拥有了类型“int *”

7

scanf_s(” %d %c %d”,&a,&b,1,&c);

14

scanf_s中%c还需要一个参数,表示长度

假如不想加,就用scanf

24

高版本的VS都会让你用scanf_s来替代scanf

1.可以:Alt+F7,打开工程属性,然后找到图片上标注的地方,添加一行内容_CRT_SECURE_NO_DEPRECATE就OK了

2.假如用scanf_s,在读入%c或%s的时候必须多传入一个参数用来指定读取的长度,否则会出错

5

#pragma warning(disable:4996)

...

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明scanf_s(" %d %c %d",&a,&b,&c)每次运行总会出错!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值