扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流