scanf_s函数与scanf函数的联系,以及scanf函数和scanf_s函数的具体用法

发布时间:2024年01月25日

一.scanf()和 scanf_s()主要有以下几个区别:

1.安全性

  • scanf()函数不进行检查输入边界,这可能导致数据溢出等问题
  • scanf_s()函数进行检查输入边界,确保不会读取超过用户为缓存区分配的字符数,大大提高了安全性

2.使用方式

  • scanf()函数通常只读取一个格式字符串
  • scanf_s()?需要提供两个参数:一个是用于存储输入的缓冲区,另一个是表示要读取的最大字符数。

3.平台的依赖性

  • scanf()是C语言的标准库函数,适用于大多数支持C语言的平台上。
  • scanf_s()是微软的专有扩展,可能在非MSVC编译器中不支持。

4.性能

  • scanf_s()函数性能较强,因为它一定程度上避免了不必要的内存分配

二.scanf_s()函数和scanf()函数的简单示例

  • scanf函数?

?1.scanf(“输入控制符”,输入参数);

%d 读入十进制整数
%o 读入八进制整数
%x,%X 读入十六进制整数
%c 读入一个字符
%s 读入一个字符串
%f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。
%u 读入一个无符号十进制整数
h用于d,o,x前,指定为short
l用于d,o,x前,指定为long,用e,f 前指定为double

2,scanf(“非输入控制符 输入控制符”,输入参数);

3.通过scanf进行赋值

?1 指定输入数据所占列宽scanf(“%3d%3d”,&a,&b)
? ? ? ? ? ??
?2,%后面加‘*’用来抑制输入。scanf(“%2d%*3d%2d”,&a,&b)
? ? ? ? ??
?3, ?输入数据流分隔。根据格式字符的含义从输入流中取得数据,当输入流中数据类型与格式字符要求不符时,就认为这一项结束。
?
?4,隐示分隔符。空格、制表符’\t’,换行符/回车键’\n’都是C语言认定的数据分隔
?符。

  • scanf_s()函数

?1.使用方法都大致相同

2.关键与scanf()函数的不同是,scanf_s函数具有更高的安全性,一定程度上避免了缓存区的溢出问题

例:

?

文章来源:https://blog.csdn.net/znc5201314/article/details/135832510
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。