strcpy 函式詳解

2021-10-11 09:17:12 字數 2661 閱讀 5134

strcpy()函式是c語言中的乙個複製字串的庫函式,以下將詳細解釋說明一下:

char *strcpy

(char *dst, const

char *src)

;

char * strcpy

(char *dst,const

char *src)

(1)const 修飾:源字串引數用const修飾,防止修改源字串;

(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的首位址,如

char *a=

"coda";

char b[max]=

"you are the best one.";

char *p;

p=strcpy(b+

8,a);

puts(p);

輸出結果為:coda

可能到這裡你已經發現了一些問題,如果想把乙個字串的一部分複製到另乙個字串的某個位置,該怎麼辦呢,顯然strcpy()函式是滿足不了這個功能的,strncpy()函式是為了彌補strcpy()函式不能檢查目標字串是否容納下源字串的不足而設定的乙個函式。並且完全可以實現這個功能。

以上如果有錯誤,還請提出。

strcpy()函式是c語言中的乙個複製字串的庫函式,以下將詳細解釋說明一下:

char *strcpy

(char *dst, const

char *src)

;

char * strcpy

(char *dst,const

char *src)

(1)const 修飾:源字串引數用const修飾,防止修改源字串;

(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的首位址,如

char *a=

"coda";

char b[max]=

"you are the best one.";

char *p;

p=strcpy(b+

8,a);

puts(p);

輸出結果為:coda

可能到這裡你已經發現了一些問題,如果想把乙個字串的一部分複製到另乙個字串的某個位置,該怎麼辦呢,顯然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...