c++语言函数strcpy,C++中函数的安全版本的意义及strcpy函数的功能和差别(图)
C++中函数的安全版本的意义及strcpy函数的功能和差别(图)
我们在进行C/C++编程时,会发现中有些函数在VS中使用时,提示使用_s的函数版本,其实这种_s的函数版本是安全版本,它们完成的任务与原函数几乎相同,但有细微差别,在此进行简洁描述,以strcpy()函数和它的安全版本strcpy_s()函数为例,借鉴百度知道里面大牛的部分解析和例子。
strcpy_s()函数是strcpy()的安全版本,属于ISO/IEC TR 24731 的标准, 某些 C
函式库支援这个函式,包含 Microsoft C Runtime Library(微软 C 语言执行时期函式库)。它与 strcpy
的不同在于,在它取得额外参数来决定目的缓冲区大小时,会因为发生溢位而出现错误,如此一来,就可以预防缓冲区溢位。由于 strcpy_s
对于 C 语言来说是新的函式,所以没有特别受到广泛支援。
例如, 我们有个数组: char str[2];
当我们使用strcpy(str, "abcdefg")时, 以str为起点的*(str+3)也就是str[3]被写入值,
但是, 此时也许这个str+3这个位置被其它的程序或变量使用时, 则会改变其它变量的值。
也就是说其实在使用strcpy()函数时,确实是不安全的,它不在乎copy进的变量有多长,而会直接把需要copy的参数直接copy进去;更简化就是,对于strcpy(a,b);语句,它会直接把b的内容全部copy到a里面,不在乎a和b的长度大小,假设a只有一位,b有两位,那么多余的这一位同样会被copy到a后面的那一位里面,不在乎原来a后面那一位里面是否有程序之前正在使用的值,有就覆盖,没有就直接赋进去。
那么这里就有一个问题了,如果要copy的b变量无限长怎么办呢,其实strcpy()本身也是有界的,但是是默认遇到NULL时才会停止。
回到我们上面的例子,如果使用strcpy_s(str,2,"abcdefg"),则会告诉程序它只有两个字节, 此时,
程序不会将数据写入到 buf+3的地址中, 所以它更安全。而如果直接strcpy_s(str,
"abcdefg");也会报错,因为此时后面的字符串copy不进去,str本身没有那么大的空间来装"abcdefg"。
所以综上所述,确实_s版本的函数要更加安全,所以VS的新版本里面都是直接提示应使用这些安全版本了。
HTML学习笔记——表单标签上:
简介
什么是表单?
表单在网页中主要负责数据采集功能。一个表单有三个基本组成部分: 表单标签,表单域,表单按钮。
什么是表单元素?
HTML中标签/标记/元素都是指HTML中的标签
表单元素其实就是HTML中的一些标签,在浏览器中所有的表单标签都有特殊的外观和默认的功能
格式
表单元素>
Input标签
标签,标签有一个type属性,这个属性有很多类型的取值,取值的不同就决定了标签的功能和外观,所有的标签必须写在
标签中
text:明文输入框,value属性设置默认值
password:暗文输入框,value属性设置默认值
radio:单选框
-
默认情况下单选框不会互斥,需要设置name属性,把同名的单选框添加到同名的分组当中去,在一个分组中的单选框互斥
要设置单选框默认选中,只需要设置checked属性为checked
HTML中如果属性的名称和取值一样,可以只写一个属性名称,但是XHTML中必须填写完整
一个分组中如果设置了多个checked属性,则按照分组中最后一个设置的radio为准
checkbox:复选框
要设置多选框默认选中,只需要设置checked属性为checked
可以设置多个checked属性
button:按钮,配合js完成一些操作
img:图片按钮,配合js完成一些操作
reset:重置按钮,不设置value属性的话,有默认value=“重置”,用于清空表单数据
submit:提交按钮,不设置value属性的话,有默认value=“提交”,用于提交表单数据
需要设置提交的目标服务器:通过action属性设置
需要提交哪些数据:form中的所有定义了name属性的表单元素
hidden:隐藏域,不会显示在网页上,用于悄悄收集用户的数据
email:邮箱,添加正则表达式校验输入的邮箱格式是否正确
url:url链接,添加正则表达式校验输入的url格式是否正确,注意完整的url需要以http://或者https://开头
number:数字,添加正则表达式校验保证只能输入数字
date:时间,添加一个时间选择框
color:颜色,添加一个颜色选择框
Label标签
默认情况下文字和输入框是没有关联关系的,也就是说点击文字,对应的输入框不会聚焦,如果想要让输入框获得焦点,就需要把文字和输入框绑定起来,这时候可以使用Label标签。李白铁杵磨成针的故事读后感心得体会,首先给标签设置一个id,然后用标签包裹文字,然后设置标签的for属性为对应输入框的id,这是官方推荐的写法。
username:
password:
你还可以这样做,直接用标签报告你的标签,也能实现相同的结果,不需要设置id属性,也不需要设置for属性,这种方法仅仅适用于文字和标签一一对应的情况
username:
c++语言函数strcpy,C++中函数的安全版本的意义及strcpy函数的功能和差别(图)相关推荐
- c++ getpid函数_C Linux中的getpid()和getppid()函数
c++ getpid函数 If we are working on the processes, signals related programming using C language in Lin ...
- php with函数,string - PHP中的startsWith()和endsWith()函数
string - PHP中的startsWith()和endsWith()函数 我如何编写两个带字符串的函数,如果它以指定的字符/字符串开头或以它结尾,则返回? 例如: $str = '|apples ...
- python apply函数取数据中的后四位_python 实现rolling和apply函数的向下取值操作
我就废话不多说了,大家还是直接看代码吧! import pandas as pd def get_under_rolling(df,window,user,name): df[name] = df[u ...
- R语言epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(一维频率表、包含频数的百分比、累积的百分比、使用条形图可视化频数分布)、设置cum.percent参数即使存在缺失值也显示
R语言使用epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(tab1函数计算数据的一维频率表.包含频数的百分比.累积的百分比.使用条形图可视化频数分布).设置cum.percen ...
- R语言epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(一维频率表、频数的百分比、累积的百分比、使用条形图可视化频数分布)、自定义设置cum.percent参数是否显示累积百分比
R语言使用epiDisplay包的tab1函数计算数据框中指定变量的频率并可视化(tab1函数计算数据的一维频率表.包含频数的百分比.累积的百分比.使用条形图可视化频数分布).自定义设置cum.per ...
- C++类的虚函数表和虚函数在内存中的位置
C++类的虚函数表和虚函数在内存中的位置 C++类的虚函数表和虚函数在内存中的位置 虚函数表和虚函数在内存中的位置说明 参考 C++类的虚函数表和虚函数在内存中的位置 虚函数表指针是虚函数表所在位置的 ...
- python 类函数调用外部函数_python类中调用外部函数,python 函数中 定义类
Q1:python函数里的数组如何在函数外调用出来 使用返回值的方法有两种: 可以直接把调用的函数作为变量使用 可以用调用函数给一个变量赋值 第一种情况见如下例子: l = [1,2,3,4,5] d ...
- log包在Golang语言的标准库中是怎么使用的?
Golang 语言的标准库中提供了一个简单的 log 日志包,它不仅提供了很多函数,还定义了一个包含很多方法的类型 Logger.但是它也有缺点,比如不支持区分日志级别,不支持日志文件切割等. 01. ...
- lisp 暖通设计_LISP 语言在CAD 道路设计中的各种应用
第三章 LISP 语言在 CAD 道路设计中的各种应用 3.1 绘制平面任意函数曲线的 AutoLISP 程序设计 在各个工程设计领域中, 经常要绘制一些曲线, 特别是平面曲线, 如水工结构的溢流曲 ...
最新文章
- Audio Streamer
- 亮剑.NET. 图解C#开发实战 在线阅读
- mockito mock void方法_纯干货,浅谈Mockito在单元测试中的实际应用
- 因果推断 - 基础知识
- java实现愤怒的小鸟游戏
- 腾讯云ubuntu18安装图形化界面
- VMware虚拟机关闭后托盘运行设置
- Java中的Tomcat数据源JNDI示例
- 系统自带不起眼但很强杀毒工具
- 基于深度学习的人脸识别技术综述
- 做课题与科研项目常用的研究方法
- 20182319彭淼迪第一周学习总结
- 水井坊:“高端化”的尴尬与库存危机
- 行业分析-全球与中国塑料垫料市场现状及未来发展趋势
- mac 配置mysql
- CAD图纸无法复制粘贴该怎么办?
- 【js】仿照网易云音乐制作的音乐播放组件
- bootmgr快速修复win7_win7 iso镜像下载(Win7安装版_非GHOST ISO镜像)
- Android开发者请进:猛击鼠标,请投一票!
- 华为服务器虚拟化收费标准,HCS-Solution-IT-华为服务器虚拟化解决方案-03配置报价指导_华为虚拟化软件价格...
热门文章
- how SAP CRM settype structure names are determined
- why my SAP UI5 filter by titleID does not work
- 判断ABAP software component是否可修改及可extend的API
- SAP CRM Fiori 应用 My Opportunity应用点击Edit后出现time out的错误分析
- SM37作业条目的存储表
- 服务器内提取文件,linux命令如何提取文件夹内特定文件路径
- php select user 验证,php 用户验证的简单示例
- 用条件运算符编写java程序,使用条件运算符的奇怪java行为。这是一个错误吗?...
- case zhen语句_switch case语句,switch case用法详解
- python request下载文件_Python3.4.3使用urllib.request下载文件带进度显示