C語(yǔ)言 strcat_s 函數(shù) - C語(yǔ)言零基礎(chǔ)入門教程

目錄

零基礎(chǔ) C/C++ 學(xué)習(xí)路線推薦 : C/C++ 學(xué)習(xí)目錄 >> C 語(yǔ)言基礎(chǔ)入門

一.strcat_s 函數(shù)簡(jiǎn)介

前面文章中介紹了關(guān)于字符串拼接函數(shù) strcat ,而 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ǔ)法如下:

/*
*描述:此類函數(shù)是用于對(duì)字符串進(jìn)行拼接谋逻, 將兩個(gè)字符串連接再一起
*
*參數(shù):
*   [in] strSource:需要追加的字符串
*   [in] numberOfElements:拼接后的字符串大写裟佟(并非目標(biāo)字符串大小也并非原始字符串大小)
*   [out] strDestination:目標(biāo)字符串
*
*返回值:errno_t是微軟新定義的一種類型毁兆,這種類型是一種整型浙滤,
*       代表錯(cuò)誤代碼,若果是0 則代表沒(méi)有錯(cuò)誤气堕,如果是其他的值 纺腊,則會(huì)拋出一個(gè)值畔咧;
*/
//頭文件:string.h
errno_t strcat_s(char *strDestination , size_t numberOfElements , const char *strSource );

1.strcat_s 函數(shù)把 strSource 所指向的字符串追加到 strDestination 所指向的字符串的結(jié)尾,所以必須要保證 strDestination 有足夠的內(nèi)存空間來(lái)容納 strSourcestrDestination 兩個(gè)字符串揖膜,否則會(huì)導(dǎo)致溢出錯(cuò)誤誓沸。

strcat_s 函數(shù)原理:dst內(nèi)存空間大小 = 目標(biāo)字符串長(zhǎng)度 + 原始字符串場(chǎng)地 + ‘\0’;

2.strDestination 末尾的\0會(huì)被覆蓋壹粟,strSource 末尾的\0會(huì)一起被復(fù)制過(guò)去拜隧,最終的字符串只有一個(gè)\0;

二.strcat_s 函數(shù)原理

strcat_s 函數(shù)原理:dst 內(nèi)存空間大小 = 目標(biāo)字符串長(zhǎng)度 + 原始字符串場(chǎng)地 + ‘\0’;

獲取內(nèi)存空間大小使用 sizeof 函數(shù)(獲取內(nèi)存空間大谐孟伞)洪添;獲取字符串長(zhǎng)度使用 strlen 函數(shù)(查字符串長(zhǎng)度)

三.strcat_s 函數(shù)實(shí)戰(zhàn)

/******************************************************************************************/
//@Author:猿說(shuō)編程
//@Blog(個(gè)人博客地址): www.codersrc.com
//@File:C語(yǔ)言教程 - C語(yǔ)言 strcat_s 函數(shù)
//@Time:2021/06/05 08:00
//@Motto:不積跬步無(wú)以至千里,不積小流無(wú)以成江海雀费,程序人生的精彩需要堅(jiā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, use _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\n", dst); //
    strcat_s(dst, len, src);
    printf("strcat_s之后 dst:%s\n", dst);//
    system("pause");
}
輸出結(jié)果:
strcat_s之前 dst:www.codersrc.com
strcat_s之后 dst:www.codersrc.comC/C++教程-strcat_s函數(shù)
請(qǐng)按任意鍵繼續(xù). . .

注意:strcat_s 第二個(gè)參數(shù)的計(jì)算忿峻,該參數(shù)是拼接后的字符串大小,并非原字符串大小或者目標(biāo)字符串大小;

四.猜你喜歡

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸載
  4. Visual Studio 2003/2015 卸載
  5. 設(shè)置 Visual Studio 字體/背景/行號(hào)
  6. C 語(yǔ)言格式控制符/占位符
  7. C 語(yǔ)言邏輯運(yùn)算符
  8. C 語(yǔ)言三目運(yùn)算符
  9. C 語(yǔ)言逗號(hào)表達(dá)式
  10. C 語(yǔ)言自加自減運(yùn)算符(++i / i++)
  11. C 語(yǔ)言 for 循環(huán)
  12. C 語(yǔ)言 break 和 continue
  13. C 語(yǔ)言 while 循環(huán)
  14. C 語(yǔ)言 do while 和 while 循環(huán)
  15. C 語(yǔ)言 switch 語(yǔ)句
  16. C 語(yǔ)言 goto 語(yǔ)句
  17. C 語(yǔ)言 char 字符串
  18. C 語(yǔ)言 strlen 函數(shù)
  19. C 語(yǔ)言 sizeof 函數(shù)
  20. C 語(yǔ)言 sizeof 和 strlen 函數(shù)區(qū)別
  21. C 語(yǔ)言 strcpy 函數(shù)
  22. C 語(yǔ)言 strcpy_s 函數(shù)
  23. C 語(yǔ)言 strcpy 和 strcpy_s 函數(shù)區(qū)別
  24. C 語(yǔ)言 memcpy 和 memcpy_s 區(qū)別
  25. C 語(yǔ)言 strcat 函數(shù)
  26. C 語(yǔ)言 strcat_s 函數(shù)

未經(jīng)允許不得轉(zhuǎn)載:猿說(shuō)編程 ? C 語(yǔ)言 strcat_s 函數(shù)

本文由博客 - 猿說(shuō)編程 猿說(shuō)編程 發(fā)布貌矿!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炭菌,一起剝皮案震驚了整個(gè)濱河市罪佳,隨后出現(xiàn)的幾起案子逛漫,更是在濱河造成了極大的恐慌,老刑警劉巖赘艳,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌毡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蕾管,警方通過(guò)查閱死者的電腦和手機(jī)枷踏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)掰曾,“玉大人旭蠕,你說(shuō)我怎么就攤上這事】跆梗” “怎么了掏熬?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)秒梅。 經(jīng)常有香客問(wèn)我旗芬,道長(zhǎng),這世上最難降的妖魔是什么捆蜀? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任疮丛,我火速辦了婚禮幔嫂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘誊薄。我一直安慰自己履恩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布暇屋。 她就那樣靜靜地躺著似袁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咐刨。 梳的紋絲不亂的頭發(fā)上昙衅,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音定鸟,去河邊找鬼而涉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛联予,可吹牛的內(nèi)容都是我干的啼县。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼沸久,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼季眷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起卷胯,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤子刮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后窑睁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挺峡,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年担钮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了橱赠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箫津,死狀恐怖狭姨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苏遥,我是刑警寧澤饼拍,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站暖眼,受9級(jí)特大地震影響惕耕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诫肠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一司澎、第九天 我趴在偏房一處隱蔽的房頂上張望欺缘。 院中可真熱鬧,春花似錦挤安、人聲如沸谚殊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嫩絮。三九已至,卻和暖如春围肥,著一層夾襖步出監(jiān)牢的瞬間剿干,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工穆刻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留置尔,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓氢伟,卻偏偏與公主長(zhǎng)得像榜轿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朵锣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容