C语言中scanf_s和 scanf区别是什么

Python015

C语言中scanf_s和 scanf区别是什么,第1张

1、使用区别

scanf()不会检查输入边界,可能造成数据溢出。

scanf_s()会进行边界检查。

2、意思

scanf表示从键盘输入指定格式的数据。如:scanf("%d",x)指从键盘给x输入一个int型(整型)数据;scanf("%f",x)指从键盘给x输入一个float型(实型)数据;

对应的输出为:printf 按照指定的格式输出数据;如printf("%d",x) 指按整型数据输出X中的值。

因为带“_s”后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元素,防止hacker利用原版的不安全性(漏洞)黑掉系统。

3、scanf_s()参数与scanf()不同

例如scanf(“%s”,&name,n),整形n为name类型的大小,如果name是数组,那n就是该数组的大小。

输入两次,是为了把上一个scanf的回车符号给接收掉。

ps:避免这种多余字符,还有很多方法,比如:

一、把字符输入写在第一个 ,后面的scanf都写数值的输入。

二、循环接收字符并判断,筛除回车符号。

三、在scanf输入字符前,调用fflush(stdin)清空输入缓存。

ps:题外提示,没有特殊需求,scanf格式中不要加多余符号,否则要按格式输入,像题目中a=%d,输入时也要输入字符a=以及逗号。