天天看點

C語言 strcat_s 函數 - C語言零基礎入門教程

目錄

  • 一.strcat_s 函數簡介
  • 二.strcat_s 函數原理
  • 三.strcat_s 函數實戰
  • 四.猜你喜歡
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

前面文章中介紹了關于字元串拼接函數

strcat

,而

strcat_s

函數和

strcat

函數一樣,主要用于字元串拼接;

strcat_s

是系統的安全函數,微軟在

2005

後建議用一系統所謂安全的函數,這中間就有

strcat_s

取代了

strcat

,原來

strcat

函數,沒有方法來保證有效的緩沖區尺寸,是以它隻能假定緩沖足夠大來容納要拷貝的字元串,容易産生程式崩潰。而

strcat_s

函數能很好的規避這個問題,

strcat_s

函數文法如下:

/*
*描述:此類函數是用于對字元串進行拼接, 将兩個字元串連接配接再一起
*
*參數:
*   [in] strSource:需要追加的字元串
*   [in] numberOfElements:拼接後的字元串大小(并非目标字元串大小也并非原始字元串大小)
*   [out] strDestination:目标字元串
*
*傳回值:errno_t是微軟新定義的一種類型,這種類型是一種整型,
*       代表錯誤代碼,若果是0 則代表沒有錯誤,如果是其他的值 ,則會抛出一個值;
*/
//頭檔案:string.h
errno_t strcat_s(char *strDestination , size_t numberOfElements , const char *strSource );
           

1.

strcat_s

函數把

strSource

所指向的字元串追加到

strDestination

所指向的字元串的結尾,是以必須要保證

strDestination

有足夠的記憶體空間來容納

strSource

strDestination

兩個字元串,否則會導緻溢出錯誤。

strcat_s

函數原理:

dst

記憶體空間大小 = 目标字元串長度 + 原始字元串場地 + ‘\0’;

2.

strDestination

末尾的

\0

會被覆寫,

strSource

\0

會一起被複制過去,最終的字元串隻有一個

\0

;

strcat_s

dst

擷取記憶體空間大小使用

sizeof

函數(擷取記憶體空間大小);擷取字元串長度使用

strlen

函數(查字元串長度)

/******************************************************************************************/
//@Author:猿說程式設計
//@Blog(個人部落格位址): www.codersrc.com
//@File:C語言教程 - C語言 strcat_s 函數
//@Time:2021/06/05 08:00
//@Motto:不積跬步無以至千裡,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#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函數" };
    char dst[1024] = { "www.codersrc.com" };
    //注意:strcat_s第二個參數的計算,該參數是拼接後的字元串大小,并非原字元串大小或者目标字元串大小
    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");
}
輸出結果:
strcat_s之前 dst:www.codersrc.com
strcat_s之後 dst:www.codersrc.comC/C++教程-strcat_s函數
請按任意鍵繼續. . .
           

注意:

strcat_s

第二個參數的計算,該參數是拼接後的字元串大小,并非原字元串大小或者目标字元串大小;

  1. 安裝 Visual Studio
  2. 安裝 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 解除安裝
  4. Visual Studio 2003/2015 解除安裝
  5. 設定 Visual Studio 字型/背景/行号
  6. C 語言格式控制符/占位符
  7. C 語言邏輯運算符
  8. C 語言三目運算符
  9. C 語言逗号表達式
  10. C 語言自加自減運算符(++i / i++)
  11. C 語言 for 循環
  12. C 語言 break 和 continue
  13. C 語言 while 循環
  14. C 語言 do while 和 while 循環
  15. C 語言 switch 語句
  16. C 語言 goto 語句
  17. C 語言 char 字元串
  18. C 語言 strlen 函數
  19. C 語言 sizeof 函數
  20. C 語言 sizeof 和 strlen 函數差別
  21. C 語言 strcpy 函數
  22. C 語言 strcpy_s 函數
  23. C 語言 strcpy 和 strcpy_s 函數差別
  24. C 語言 memcpy 和 memcpy_s 差別
  25. C 語言 strcat 函數
  26. C 語言 strcat_s 函數

未經允許不得轉載:猿說程式設計 » C 語言 strcat_s 函數

本文由部落格 - 猿說程式設計 猿說程式設計 釋出!

繼續閱讀