strcpy()函式是c語言中的乙個複製字串的庫函式,以下將詳細解釋說明一下:
char *strcpy
(char *dst, const
char *src)
;
(1)const 修飾:源字串引數用const修飾,防止修改源字串;char * strcpy
(char *dst,const
char *src)
(2)空指標檢查:源指標和目的指標都有可能會出現空指標的情況,所以應該對其進行檢查;
(3)為什麼要設定ret 指標以及返回ret指標的位置[3],由於目的指標dst已經在進行移動了,所以用輔助指標ret表明首指標;
(4)以上所示[2]處,為簡單的字串的複製過程,正好表明strcpy函式遇到'\0'將會停止;
之前在某處看到過這個問題,以下將對其進行詳解,
· 最終答案輸出是 "abc\0";
· 為什麼答案不是"abc\0ef";
[1]從strcpy函式的實現**可以看出當src指標指向為『\0』時將會停止字串的複製,由此可以得知返回ret指標所指向的陣列a內容應該是 「abc\0ef」,也就是說實際記憶體陣列a中的內容應該是「abc\0ef「;但是為什麼最終顯示會是"abc\0"呢,原因在於,strcpy的本身屬性:即strcpy只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符;
基於此種原因,但是字串的特性是什麼呢?字串最後乙個位元組存放的是乙個空字元——「\0」,用來表示字串的結束。把b複製到a之後會令b的空字元把複製後的字串隔斷,所以最終printf輸出只能是"abc\0";
【注】此函式的第乙個屬性,會返回ret,也就是第一次,dst賦給ret的首位址,如
輸出結果為:codachar *a=
"coda";
char b[max]=
"you are the best one.";
char *p;
p=strcpy(b+
8,a);
puts(p);
可能到這裡你已經發現了一些問題,如果想把乙個字串的一部分複製到另乙個字串的某個位置,該怎麼辦呢,顯然strcpy()函式是滿足不了這個功能的,strncpy()函式是為了彌補strcpy()函式不能檢查目標字串是否容納下源字串的不足而設定的乙個函式。並且完全可以實現這個功能。
以上如果有錯誤,還請提出。
strcpy()函式是c語言中的乙個複製字串的庫函式,以下將詳細解釋說明一下:
char *strcpy
(char *dst, const
char *src)
;
(1)const 修飾:源字串引數用const修飾,防止修改源字串;char * strcpy
(char *dst,const
char *src)
(2)空指標檢查:源指標和目的指標都有可能會出現空指標的情況,所以應該對其進行檢查;
(3)為什麼要設定ret 指標以及返回ret指標的位置[3],由於目的指標dst已經在進行移動了,所以用輔助指標ret表明首指標;
(4)以上所示[2]處,為簡單的字串的複製過程,正好表明strcpy函式遇到'\0'將會停止;
之前在某處看到過這個問題,以下將對其進行詳解,
· 最終答案輸出是 "abc\0";
· 為什麼答案不是"abc\0ef";
[1]從strcpy函式的實現**可以看出當src指標指向為『\0』時將會停止字串的複製,由此可以得知返回ret指標所指向的陣列a內容應該是 「abc\0ef」,也就是說實際記憶體陣列a中的內容應該是「abc\0ef「;但是為什麼最終顯示會是"abc\0"呢,原因在於,strcpy的本身屬性:即strcpy只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符;
基於此種原因,但是字串的特性是什麼呢?字串最後乙個位元組存放的是乙個空字元——「\0」,用來表示字串的結束。把b複製到a之後會令b的空字元把複製後的字串隔斷,所以最終printf輸出只能是"abc\0";
【注】此函式的第乙個屬性,會返回ret,也就是第一次,dst賦給ret的首位址,如
輸出結果為:codachar *a=
"coda";
char b[max]=
"you are the best one.";
char *p;
p=strcpy(b+
8,a);
puts(p);
可能到這裡你已經發現了一些問題,如果想把乙個字串的一部分複製到另乙個字串的某個位置,該怎麼辦呢,顯然strcpy()函式是滿足不了這個功能的,strncpy()函式是為了彌補strcpy()函式不能檢查目標字串是否容納下源字串的不足而設定的乙個函式。並且完全可以實現這個功能。
以上如果有錯誤,還請提出。
strcpy 函式用法及其詳解
c 庫函式 char strcpy char dest,const char src 把 src 所指向的字串複製到 dest。需要注意的是如果目標陣列 dest 不夠大,而源字串的長度又太長,可能會造成緩衝溢位的情況。char strcpy char dest,const char src 該函式...
C語言strcpy庫函式詳解
目錄 1.從上面的msdn關於strcpy庫函式的簡介中,我們可以知道,傳進函式的第乙個引數是目標陣列,也就是用來接收被拷貝的字串,第二個引數是源頭陣列,也就是將這個引數的字串拷貝www.cppcns.com到目標陣列裡面去。一定要注意目標陣列的空間大小一定要比源頭陣列的空間大小大,不然即使拷貝成功...
strcpy函式解析
題目 已知strcpy函式的原型是 char strcpy char strdest,const char strsrc 1.不呼叫庫函式,實現strcpy函式。2.解釋為什麼要返回char 解說 1.strcpy的實現 char strcpy char strdest,const char str...