C strcpy與strncpy的注意事項

2021-08-11 04:41:08 字數 1157 閱讀 4729

strcpy的函式式為:strcpy(dst,src),因為char陣列最後以』\0』為結尾,所以需要注意的是如果strlen(src)>strlen(dst)時,則最後的』\0』無法複製,則會導致出錯,即dst的大小至少要等於src的大小,保證strcpy能複製最後的』\0』。

strncpy的函式式為:strcpy(dst,src,n),即將src的前n個字元複製給dst,如果dst本來就有內容,並且本次拷貝的字元中不包含』\0』,則內容會連在一起,舉個栗子:

char dst="hello world";

strncpy(dst,"ab",2);

輸出的結果是abllo world,對於strncpy要注意的是當n< strlen(src)時,同樣會不能複製』\0』,如果n>strlen(src),則可以正確複製。同樣這裡也要這dst的大小於n的大小的關係。建議在初始化字串陣列時使用char str=。

總的來說,strcpy用來複製字串,如果dst長度足夠,其會拷貝最後的結尾符』\0』,而strncpy是用來拷貝字元的,只拷貝固定的字元個數,如果包含了』\0』則拷貝並在此結束,且需要dst大小足夠用來儲存,如果不包含』\0』,則不拷貝。

c++中map如何通過key得到value:

iter = map.find(key);

if(iter!=map.end())

return null;

字元陣列轉化成string型別:

char str = "test";

string s(ch);

string s = str;//string s; s=str;也可用於加法

將string型別轉換為字元陣列:

char buffer[5];

string s("test");

len = s.copy(buffer, 4);

buffer[len] = '\0';

或者

char buffer[5];

string s("test");

strcpy(buf, str.c_str());//strncpy(buf, str.c_str(), 5);

C strcpy和strncpy用法和區別

ifndef null ifdef cplusplus define null 0 else define null void 0 endif endif strcpy函式 顧名思義字串複製函式 原型 extern char strcpy char dest,char src 要求 src和dest...

strcpy與strncpy的區別

原型 char strcpy char dest,char src 功能 把src所指由 0 結束的字串複製到dest所指的陣列中。說明 src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。返回指向dest的指標。注意 當src串長度 dest串長度時,程式仍會將整...

strncpy與strcpy的區別與注意事項

strncpy 是 c語言 的庫函式之一,來自 c語言標準庫,定義於 string.h char strncpy char dest,char src,int n 把src所指字串的前n個位元組複製到dest所指的陣列中,並返回指向dest的指標。strcpy只是複製字串,但不限制複製的數量,很容易...