C语言:VS 2019 scanf_s 输入问题

scanf ()不检查输入边界,有内存溢出风险,已被VS 2019弃用。
衍生出自己的输入函数 ——— scanf_s(),提高安全性

关于scanf_s的用法,与scanf相似,针对输入字符、字符串增加了参数(长度参数,输入长度检测)

问1 – 输入格式:
int a = 0, b = 0, c = 0;
scanf_s("a=%d,  b=%d, c=%d", &a, &b, &c);   
//scanf_s并不输出任何显示字符,所以要根据所定义的输入格式(a=1, b=2, c=3)来输入内容,才可以准确赋值
// 1.输入  a=1,b=2,c=3
// 2.输入  x=1,b=2,c=33
// 3.输入  a=1,d=3,c=4
printf("a=%d, b=%d, c=%d\n", a, b, c);
// 1.输出 a=1, b=2, c=3
// 2.输出 a=0, b=0, c=0
// 3.输出 a=1, b=0, c=0

// 若输入格式有误,从错误的地方开始,后面的参数都无法赋值

问2 – 关于字符串输入的参数:
char x[5];
scanf_s(%s”, x, 5); 
// 5为限制字符串x输入的长度, 长度包含’\0’,字符串结束标志要占一位
//意味着只能输入4个字符,输入多了将无法赋值
printf(%s\n”, x);   
// 1.  scanf_s(“%s”, x, 3);
// 长度可以比数组短,但是输入字符个数为2
// 2. scanf_s(“%s”, x, 6);
// 长度超过数组长度,报错

// 输入字符的话,也需要传长度参数
char x;
scanf_s("%c", &x,1);
printf("%c\n", x);


问3 – 多余空格:
int a = 0;
scanf_s(%d”,&a);  //正常情况
scanf_s(%d  ”,&a);  
//格式控制字符%d 的后面有多余的两个空格
// 会导致输入 回车 后并不能结束输入,除非再输入一个多余的字符,引发函数错误来结束输入
// 但这并不影响变量 a 的赋值
printf(%d\n”,a);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值