C语言:VS2019scanf-创新互联

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);

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:C语言:VS2019scanf-创新互联
本文路径:http://hbruida.cn/article/pgodo.html