strncpy是 c語言的函式之一,來自 c語言標準庫,定義於 string.h,char *strncpy(char *destin, char *source, int maxlen),把src所指由null結束的字串的前n個位元組複製到dest所指的陣列中。
1
2
3
標頭檔案:#include
char
*
strncpy
(
char
*dest,
char
*src,size_tn);
(c/c++)複製字串src中的內容(字元,數字、漢字....)到字串dest中,複製多少由size_tn的值決定。如果src的前n個位元組不含null字元,則結果不會以null字元結束。如果src的長度小於n個位元組,則以null填充dest直到複製完n個位元組。src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字元長度+'\0'。舉例:
#include
#include
int main()
,dest[20]={};
strncpy(dest,name,9);
printf("%s\n",dest); }
1)src串長度<=dest串長度,(這裡的串長度包含串尾null字元)
如果n>src由於長度達到src null,正常複製,特別注意,如果src中有null,strncpy複製到null即使沒到n也提前停止。如果n = src串長度,與strcpy一致。注意n的選擇當n > dest串長度,dest棧空間溢位產生崩潰異常。
2)src串長度》dest串長度
如果n =dest串長度,則dest串沒有null字元,會導致輸出會有
亂碼。如果不考慮src串複製完整性,可以將dest 最後一字元置為null。
綜上,一般情況下,使用strncpy時,建議將n置為dest串長度(除非你將多個src串都複製到dest
陣列,並且從dest尾部反向操作),複製完畢後,為保險起見,將dest串最後一字元置null,避免發生在第2)種情況下的輸出亂碼問題。當然嘍,無論是strcpy還是strncpy,保證dest串容量(能容納下src串)才是最重要的。
strcpy只是複製字串,但不限制複製的數量。很容易造成緩衝溢位。strncpy要安全一些。
strncpy能夠選擇一段字元輸出,strcpy則不能例如:
char name=,dest[20]={};
strncpy(dest,name,9);
printf("%s\n",dest);
strncpy可實現strcpy的字串複製:
char name=,dest[20]={};
strncpy(dest,name,sizeof(name));
printf("%s\n",dest);
strncpy函式使用
dest 表示複製的目標字元陣列 src 表示複製的源字元陣列 n 表示複製的字串長度。char mystr null uint8 i 0 uint32 cnt 0 uint8 sub 16 mystr strstr pbuffer,data cnt strlen mystr strncpy sub...
Strcpy函式和Strncpy函式
strcpy函式原型char strcpy char strdestination,const char strsource 庫函式下的strcpy include include intmain char arr2 abcdef strcpy arr1,arr2 printf s arr1 ret...
strncpy函式的用法
zz 利用標準庫函式strncpy 可以將一字串的一部分拷貝到另乙個字串中。strncpy 函式有3個引數 第乙個引數是目錄字串 第二個引數是源字串 第三個引數是乙個整數,代表要從源字串拷貝到目標字串中的字元數。以下是乙個用strncpy 函式拷貝字串的一部分的例子 include include ...