scanf()与scanf 您所在的位置:网站首页 scanf_s与scanf scanf()与scanf

scanf()与scanf

#scanf()与scanf| 来源: 网络整理| 查看: 265

一. scanf()与scanf_s()的解释

    scanf_s()函数是Microsoft公司VS开发工具提供的一个功能与scanf()相同的安全标准输入函数。在调用该函数读取字符数组时,必须提供一个数字以表明最多读取多少位字符

二.scanf()与scanf_s()的用法相同点

    (1)均是把输入的字符串转换成整数、浮点数、字符或字符串

    (2)在读取基本变量类型的值时,在变量类名前加上一个&

    (3)在把字符串读入字符数组中时,均不需要加&,因为数组变量名就表示一个地址

三.scanf()与scanf_s()的用法不同点

      再用字符数组获取字符串时,二者的参数列表不同

    (1)对于scanf(),参数列表仅为 数组名

      实例如下:

                 char name[3];

                  scanf("%s",name);//name为数组名,本身就是一个地址,如果输入libai(字符串),li会被保存到数组中,()格外注意:字符数组的最后一个存储单元上必须 要存储‘\0’,其他部分会被写到别的变量所在空间,会引起程序运行异常,但是存到数组中的部分会显示    (2)对于scanf_s(),参数列表为  数组名(第一参数)和 数组容量n(第二参数)              char name[3];             scanf_s("%s",name,3);//需要注意,3必须要有,表示读取字符个数,其中包括“\0”,如果没有,系统会报错,说没有第二参数,如果输入的为liba,数据溢出,不会显示        使用原因:scanf()不会检查边界,可能会造成数据溢出,有些人会利用这一弊端,而scanf_s()会检查边界,如果数据溢出,则会不输出数据    



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有