关于vs2019的scanf_s的键盘输入注意以及0xC0000005报错

2 篇文章 0 订阅

    环境:window10,vs2019    

因为再vs中许多的c库函数都有一定的安全隐患,特别是 错误4996 中,

1.我们可以再源文件(就是.c文件)头部直接输入(注意后面不要加;)

#pragma warning(disable :4996)

2.主要是介绍

再我们用 scanf_s 输入一个字符串:



    char a[10];

    scanf_s("%s",a,9);

    printf("键盘上输入的字符串是:%s\n",a);

  

后面的10,你可以理解为你最多输入(10-1)个字符串,实际上后面还包含的结束符/0 实际占用空间为10个。如果多输出就会导致内存溢出就会出现0xC0000005报错。

导致就算是断点调试也被卡住了(学艺不精)

后面不断尝试,发现是因为我在键盘输入有问题,在这段代码中我写的是%d %s %f %f %f,中间是空格,那就要在键盘上面也是空格间隔开,若你%d,%s ,%f, %f, %f

那么你就要在键盘输入也是用隔开才行,不然就可能会出现0xC0000005报错。

 scanf_s("%d %s %f %f %f", &stu[i].num, stu[i].name, 5, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);

3.介绍一个实在不会在键盘上面输入的蠢而又万能的方法:

那就是合法输入你的字符串或数字或者其他后每一个都用(enter)确定下来,有点小麻烦,但是很有用。

4.另外scanf_s中我们需要注意%s输入时,后面的对应的参数不需要写&这个符号,就如同我上面那个stu[i].name,但是需要说明多少个字符串。

(暂时想到就这么多,纯写给刚刚进入c的小白看的)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值