第一種情況: 1
2
3
4
char* p="how are you ?";
char name[20]="abcdefghijklmnopqrs";
strcpy(name,p); //name改變為"how are you ? "====>正確!
strncpy(name,p, sizeof(name));//name改變為"how are you ?" *****>正確!後續的字元將置為null
第二種情況: 1
2
3
4
5
6
char* p="how are you ?";
char name[10];
strcpy(name,p); //目標串長度小於源串,錯誤!
name[sizeof(name)-1]='\0'; //和上一步組合,彌補結果,但是這種做法並不可取,因為上一步出錯處理方式並不確定
strncpy(name,p,sizeof(name)); //源串長度大於指定拷貝的長度sizeof(name),注意在這種情況下不會自動在目標串後面加'\0'
name[sizeof(name)-1]='\0'; //和上一步組合,彌補結果
strcpy和strncpy的區別
strcpy 原型 char strcpy char restrict s1,const char restrict s2 用法 include 功能 把s2所指由null結束的字串複製到s1所指的陣列中。說明 s1和s2所指記憶體區域不可以重疊且s1必須有足夠的空間來容納s2的字串。返回指向s1的...
strncpy 和strcpy的區別
1.strcpy函式 顧名思義字串複製函式 原型 extern char strcpy char dest,char src 功能 把從src位址開始且含有null結束符的字串賦值到以dest開始的位址空間,返回dest 位址中儲存的為複製後的新值 要求 src和dest所指記憶體區域不可以重疊且d...
strcpy 和 strncpy的區別
strcpy 字串複製 原型 char strcpy char dest,char src 功能 把src所指由 0 結束的字串複製到dest所指的陣列中。說明 src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字串。返回指向dest的指標。注意 當src串長度 des...