目錄
一.strcat_s 函數(shù)簡(jiǎn)介
二.strcat_s 函數(shù)原理
三.strcat_s 函數(shù)實(shí)戰(zhàn)
一.strcat_s 函數(shù)簡(jiǎn)介strcat_s函數(shù)和strcat函數(shù)一樣,主要用于字符串拼接;
strcat_s是系統(tǒng)的安全函數(shù),微軟在2005后建議用一系統(tǒng)所謂安全的函數(shù),這中間就有strcat_s取代了strcat,原來(lái)strcat函數(shù),沒(méi)有方法來(lái)保證有效的緩沖區(qū)尺寸,所以它只能假定緩沖足夠大來(lái)容納要拷貝的字符串,容易產(chǎn)生程序崩潰。而strcat_s函數(shù)能很好的規(guī)避這個(gè)問(wèn)題,strcat_s函數(shù)語(yǔ)法如下:
/**描述:此類(lèi)函數(shù)是用于對(duì)字符串進(jìn)行拼接, 將兩個(gè)字符串連接再一起**參數(shù):* [in] strSource:需要追加的字符串* [in] numberOfElements:拼接后的字符串大小(并非目標(biāo)字符串大小也并非原始字符串大小)* [out] strDestination:目標(biāo)字符串**返回值:errno_t是微軟新定義的一種類(lèi)型,這種類(lèi)型是一種整型,* 代表錯(cuò)誤代碼,若果是0 則代表沒(méi)有錯(cuò)誤,如果是其他的值 ,則會(huì)拋出一個(gè)值;*///頭文件:string.herrno_t strcat_s(char *strDestination , size_t numberOfElements , const char *strSource );
1.strcat_s函數(shù)把strSource所指向的字符串追加到strDestination所指向的字符串的結(jié)尾,所以必須要保證strDestination有足夠的內(nèi)存空間來(lái)容納strSource和strDestination兩個(gè)字符串,否則會(huì)導(dǎo)致溢出錯(cuò)誤。
strcat_s函數(shù)原理:dst內(nèi)存空間大小 = 目標(biāo)字符串長(zhǎng)度 + 原始字符串場(chǎng)地 + ‘’;
2.strDestination末尾的會(huì)被覆蓋,strSource末尾的會(huì)一起被復(fù)制過(guò)去,最終的字符串只有一個(gè);
二.strcat_s 函數(shù)原理strcat_s函數(shù)原理:dst內(nèi)存空間大小 = 目標(biāo)字符串長(zhǎng)度 + 原始字符串場(chǎng)地 + ‘’;
獲取內(nèi)存空間大小使用sizeof函數(shù)(獲取內(nèi)存空間大小);獲取字符串長(zhǎng)度使用strlen函數(shù)(查字符串長(zhǎng)度)
三.strcat_s 函數(shù)實(shí)戰(zhàn)#include "stdafx.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include "windows.h"//error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, u _CRT_SECURE_NO_WARNINGS. See online help for details.#pragma warning( disable : 4996)void main(){ char src[1024] = { "C/C++教程-strcat_s函數(shù)" }; char dst[1024] = { "www.codersrc.com" }; //注意:strcat_s第二個(gè)參數(shù)的計(jì)算,該參數(shù)是拼接后的字符串大小,并非原字符串大小或者目標(biāo)字符串大小 int len = strlen(src) + strlen(dst) + 1; printf("strcat_s之前 dst:%s
", dst); // strcat_s(dst, len, src); printf("strcat_s之后 dst:%s
", dst);// system("pau");}輸出結(jié)果:strcat_s之前 dst:www.codersrc.comstrcat_s之后 dst:www.codersrc.comC/C++教程-strcat_s函數(shù)請(qǐng)按任意鍵繼續(xù). . .
注意:strcat_s第二個(gè)參數(shù)的計(jì)算,該參數(shù)是拼接后的字符串大小,并非原字符串大小或者目標(biāo)字符串大小;
希望對(duì)于初學(xué)者的你有幫助!
另外的話(huà)為了幫助大家,輕松,高效學(xué)習(xí)C語(yǔ)言/C++,我給大家分享我收集的資源,從最零基礎(chǔ)開(kāi)始的教程到C語(yǔ)言項(xiàng)目案例,幫助大家在學(xué)習(xí)C語(yǔ)言的道路上披荊斬棘!可以來(lái)我粉絲群領(lǐng)取哦~
編程學(xué)習(xí)書(shū)籍分享:
編程學(xué)習(xí)視頻分享:
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)最重要的是你可以在群里面交流提問(wèn)編程問(wèn)題哦!
對(duì)于C/C++感興趣可以關(guān)注小編在后臺(tái)私信我:【編程交流】一起來(lái)學(xué)習(xí)哦!可以領(lǐng)取一些C/C++的項(xiàng)目學(xué)習(xí)視頻資料哦!已經(jīng)設(shè)置好了關(guān)鍵詞自動(dòng)回復(fù),自動(dòng)領(lǐng)取就好了!
本文發(fā)布于:2023-02-28 20:58:00,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/167771215295136.html
版權(quán)聲明:本站內(nèi)容均來(lái)自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:strcat(strcat函數(shù)).doc
本文 PDF 下載地址:strcat(strcat函數(shù)).pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |