日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++语言函数strcpy,C++中函数的安全版本的意义及strcpy函数的功能和差别(图)

發(fā)布時間:2023/12/19 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++语言函数strcpy,C++中函数的安全版本的意义及strcpy函数的功能和差别(图) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C++中函數(shù)的安全版本的意義及strcpy函數(shù)的功能和差別(圖)

我們在進(jìn)行C/C++編程時,會發(fā)現(xiàn)中有些函數(shù)在VS中使用時,提示使用_s的函數(shù)版本,其實這種_s的函數(shù)版本是安全版本,它們完成的任務(wù)與原函數(shù)幾乎相同,但有細(xì)微差別,在此進(jìn)行簡潔描述,以strcpy()函數(shù)和它的安全版本strcpy_s()函數(shù)為例,借鑒百度知道里面大牛的部分解析和例子。

strcpy_s()函數(shù)是strcpy()的安全版本,屬于ISO/IEC TR 24731 的標(biāo)準(zhǔn), 某些 C

函式庫支援這個函式,包含 Microsoft C Runtime Library(微軟 C 語言執(zhí)行時期函式庫)。它與 strcpy

的不同在于,在它取得額外參數(shù)來決定目的緩沖區(qū)大小時,會因為發(fā)生溢位而出現(xiàn)錯誤,如此一來,就可以預(yù)防緩沖區(qū)溢位。由于 strcpy_s

對于 C 語言來說是新的函式,所以沒有特別受到廣泛支援。

例如, 我們有個數(shù)組: char str[2];

當(dāng)我們使用strcpy(str, "abcdefg")時, 以str為起點的*(str+3)也就是str[3]被寫入值,

但是, 此時也許這個str+3這個位置被其它的程序或變量使用時, 則會改變其它變量的值。

也就是說其實在使用strcpy()函數(shù)時,確實是不安全的,它不在乎copy進(jìn)的變量有多長,而會直接把需要copy的參數(shù)直接copy進(jìn)去;更簡化就是,對于strcpy(a,b);語句,它會直接把b的內(nèi)容全部copy到a里面,不在乎a和b的長度大小,假設(shè)a只有一位,b有兩位,那么多余的這一位同樣會被copy到a后面的那一位里面,不在乎原來a后面那一位里面是否有程序之前正在使用的值,有就覆蓋,沒有就直接賦進(jìn)去。

那么這里就有一個問題了,如果要copy的b變量無限長怎么辦呢,其實strcpy()本身也是有界的,但是是默認(rèn)遇到NULL時才會停止。

回到我們上面的例子,如果使用strcpy_s(str,2,"abcdefg"),則會告訴程序它只有兩個字節(jié), 此時,

程序不會將數(shù)據(jù)寫入到 buf+3的地址中, 所以它更安全。而如果直接strcpy_s(str,

"abcdefg");也會報錯,因為此時后面的字符串copy不進(jìn)去,str本身沒有那么大的空間來裝"abcdefg"。

所以綜上所述,確實_s版本的函數(shù)要更加安全,所以VS的新版本里面都是直接提示應(yīng)使用這些安全版本了。

HTML學(xué)習(xí)筆記——表單標(biāo)簽上:

簡介

什么是表單?

表單在網(wǎng)頁中主要負(fù)責(zé)數(shù)據(jù)采集功能。一個表單有三個基本組成部分: 表單標(biāo)簽,表單域,表單按鈕。

什么是表單元素?

HTML中標(biāo)簽/標(biāo)記/元素都是指HTML中的標(biāo)簽

表單元素其實就是HTML中的一些標(biāo)簽,在瀏覽器中所有的表單標(biāo)簽都有特殊的外觀和默認(rèn)的功能

格式

表單元素>

Input標(biāo)簽

標(biāo)簽,標(biāo)簽有一個type屬性,這個屬性有很多類型的取值,取值的不同就決定了標(biāo)簽的功能和外觀,所有的標(biāo)簽必須寫在

標(biāo)簽中

text:明文輸入框,value屬性設(shè)置默認(rèn)值

password:暗文輸入框,value屬性設(shè)置默認(rèn)值

radio:單選框

-

默認(rèn)情況下單選框不會互斥,需要設(shè)置name屬性,把同名的單選框添加到同名的分組當(dāng)中去,在一個分組中的單選框互斥

要設(shè)置單選框默認(rèn)選中,只需要設(shè)置checked屬性為checked

HTML中如果屬性的名稱和取值一樣,可以只寫一個屬性名稱,但是XHTML中必須填寫完整

一個分組中如果設(shè)置了多個checked屬性,則按照分組中最后一個設(shè)置的radio為準(zhǔn)

checkbox:復(fù)選框

要設(shè)置多選框默認(rèn)選中,只需要設(shè)置checked屬性為checked

可以設(shè)置多個checked屬性

button:按鈕,配合js完成一些操作

img:圖片按鈕,配合js完成一些操作

reset:重置按鈕,不設(shè)置value屬性的話,有默認(rèn)value=“重置”,用于清空表單數(shù)據(jù)

submit:提交按鈕,不設(shè)置value屬性的話,有默認(rèn)value=“提交”,用于提交表單數(shù)據(jù)

需要設(shè)置提交的目標(biāo)服務(wù)器:通過action屬性設(shè)置

需要提交哪些數(shù)據(jù):form中的所有定義了name屬性的表單元素

hidden:隱藏域,不會顯示在網(wǎng)頁上,用于悄悄收集用戶的數(shù)據(jù)

email:郵箱,添加正則表達(dá)式校驗輸入的郵箱格式是否正確

url:url鏈接,添加正則表達(dá)式校驗輸入的url格式是否正確,注意完整的url需要以http://或者h(yuǎn)ttps://開頭

number:數(shù)字,添加正則表達(dá)式校驗保證只能輸入數(shù)字

date:時間,添加一個時間選擇框

color:顏色,添加一個顏色選擇框

Label標(biāo)簽

默認(rèn)情況下文字和輸入框是沒有關(guān)聯(lián)關(guān)系的,也就是說點擊文字,對應(yīng)的輸入框不會聚焦,如果想要讓輸入框獲得焦點,就需要把文字和輸入框綁定起來,這時候可以使用Label標(biāo)簽。李白鐵杵磨成針的故事讀后感心得體會,首先給標(biāo)簽設(shè)置一個id,然后用標(biāo)簽包裹文字,然后設(shè)置標(biāo)簽的for屬性為對應(yīng)輸入框的id,這是官方推薦的寫法。

username:

password:

你還可以這樣做,直接用標(biāo)簽報告你的標(biāo)簽,也能實現(xiàn)相同的結(jié)果,不需要設(shè)置id屬性,也不需要設(shè)置for屬性,這種方法僅僅適用于文字和標(biāo)簽一一對應(yīng)的情況

username:

總結(jié)

以上是生活随笔為你收集整理的c++语言函数strcpy,C++中函数的安全版本的意义及strcpy函数的功能和差别(图)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。