常見的字串複製函式

2021-08-03 07:31:39 字數 1791 閱讀 8750

1.strcpy()函式

原型宣告:char strcpy(char dest, const char *src);

功能:把從src位址開始且含有null結束符的字串複製到以dest開始的位址空間

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。

返回指向dest的指標。

2.strcpy_s()

_s函式是微軟自己加的, 不是標準庫, 最直觀的是c++下, 該函式不在std命名空間下.

_s函式要求傳遞陣列時(比如字串)需要額外傳遞乙個引數表示快取長度以免出錯.

在檔案頭部新增 #define _crt_secure_no_warnings 1

即可關閉vs的警告。(為了跨編譯器允許,一般不使用strcpy_s函式,但在vs中會有警告,故使用巨集定義消除警告。)

注意,strcpy_s有兩個版本,乙個可以幫助我們自動推斷緩衝區的大小,而另外乙個不能幫助我們推斷,因此在編譯器不能推斷緩衝區大小的時候,我們需要自己指定緩衝區的大小,如下面的程式所演示的那樣。

int main()

; strcpy_s( sz, "hello world!" );

cout

<< sz << endl;

char* psz2 = new

char[128];

strcpy_s( psz2, 128, "hello");

cout

<< psz2 << endl;

delete psz2;

return

0;}

3 strnpy()

strncpy 是 c語言的庫函式之一,來自 c語言標準庫,定義於string.h,把src所指向的字串中以src位址開始的前n個位元組複製到dest所指的陣列中,並返回dest。

函式原型char *strncpy(char *dest,char *src,size_t n);

(c/c++)複製字串src中的內容(字元,數字、漢字….)到字串dest中,複製多少由size_tn的值決定。

如果src的前n個字元不含null字元,則結果不會以null字元結束。如果n小於src的長度,只是將src的前n個字元複製到dest的前n個字元,不自動新增』\0』,也就是結果dest不包括』\0』,需要再手動新增乙個』\0』。

如果src的長度小於n個位元組,則以null填充dest直到複製完n個位元組。src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字元長度+』\0』。

一般情況下,使用strncpy時,建議將n置為dest串長度(除非你將多個src串都複製到dest陣列,並且從dest尾部反向操作),複製完畢後,為保險起見,將dest串最後一字元置null,避免發生輸出亂碼問題。當然嘍,無論是strcpy還是strncpy,保證dest串容量(能容納下src串)才是最重要的。

4 strlcpy()

linux c語言標準庫函式strlcpy,是更加安全版本的strcpy函式,在已知目的位址空間大小的情況下,把從src位址開始且含有』\0』結束符的字串複製到以dest開始的位址空間,並不會造成緩衝區溢位。

函式原型宣告:size_t strlcpy(char *dst, const char *src, size_t size)

功能: 在已知dest緩衝區大小並不會造成緩衝區溢位前提下,將src位址開始的字串複製到以dest開始的位址空間

返回值:src字串的大小

函式引數:引數dst為目的字串開始的指標,src為源字串的開始位址,引數size代表dst字串的大小

字串常見函式

字串插入 刪除 用於反轉在 first,last 範圍內的順 包括first指向的元素,不包括last指向的元素 1.交換vector容器中元素順序 標頭檔案 includereverse s.begin s.end 或者寫成 reverse s.begin s.begin n 2.交換string...

字串之複製函式

字串之複製函式 strcpy函式 函式原型 char strcpy char dest,const char src memcpy函式 原型 extern void memcpy void dest,void src,unsigned int count 用法 include 功能 由src所指記憶...

(函式)複製部分字串

複製部分字串 將乙個字串中從第m個字元開始的全部字元複製成為另乙個字串。函式介面定義 void strcopy char str1,char str2,int m 其中 str1 str2 m都是使用者傳入的引數。函式在指標str1所指的字串中從第m個字元開始的全部字元複製到指標str2所指向陣列中...