C語言的strcpy 和strncpy 函式

2021-10-07 13:32:43 字數 1797 閱讀 5433

strcpy() 函式用來複製字串,其原型為:

char *strcpy(char *dest, const char *src);

【引數】dest 為目標字串指標,src 為源字串指標。

注意:src 和 dest 所指的記憶體區域不能重疊,且 dest 必須有足夠的空間放置 src 所包含的字串(包含結束符null)。

【返回值】成功執行後返回目標陣列指標 dest。

strcpy() 把src所指的由null結束的字串複製到dest 所指的陣列中,返回指向 dest 字串的起始位址。

注意:如果引數 dest 所指的記憶體空間不夠大,可能會造成緩衝溢位(buffer overflow)的錯誤情況,在編寫程式時請特別留意,或者用strncpy()來取代。

示例:

/* copy1.c -- strcpy() demo */

#include

#include

// declares strcpy()

#define size 40

#define lim 5

char

*s_gets

(char

* st,

int n)

;int

main

(void)}

puts

("here are the words accepted:");

for(i =

0; i < lim; i++

)puts

(qwords[i]);

return0;

}char

*s_gets

(char

* st,

int n)

return ret_val;

}

該程式要求使用者輸入以q開頭的單詞,該程式把輸入拷貝至乙個臨時陣列中,如果第乙個字母是q,程式呼叫strcpy()把整個字串從臨時陣列拷貝至目標陣列中。strcpy()函式相當於字串賦值運算子。

該程式的執行示例如下:

enter 5 words beginning with q:

quackery [使用者輸入]

quasar [使用者輸入]

quilt [使用者輸入]

quotient [使用者輸入]

no more [使用者輸入]

no more doesn't begin with q!

quiz [使用者輸入]

here are the words accepted:

quackery

quasar

quilt

quotient

quiz

strcpy的其他屬性:

strncpy()用來複製字串的前n個字元,其原型為:

​ char * strncpy(char *dest, const char *src, size_t n);

【引數說明】dest 為目標字串指標,src 為源字串指標。

strncpy()會將字串src前n個字元拷貝到字串dest。

不像strcpy(),strncpy()不會向dest追加結束標記』\0』,這就引發了很多不合常理的問題。

注意:src 和 dest 所指的記憶體區域不能重疊,且 dest 必須有足夠的空間放置n個字元。

【返回值】返回字串dest。

C語言 strcpy和strncpy的缺陷!

strcpy 函式應該是我們用的比較常用的乙個函式,基本功能是將乙個字串拷貝到我指定的記憶體空間。但是要複製的字串長度超過這段記憶體空間的話,結果可能是未知的。這是c語言裡面複製字串的庫函式,函式宣告包括在專門處理字串的標頭檔案中 char strcpy char dst,const char sr...

C語言的strcpy 和strncpy 函式

strcpy 函式 strcpy 函式用來複製字串,其原型為 char strcpy char dest,const char src 引數 dest 為目標字串指標,src 為源字串指標。注意 src 和 dest 所指的記憶體區域不能重疊,且 dest 必須有足夠的空間放置 src 所包含的字串...

c語言 strcpy的作用

1,在c語言中,非字元陣列初始化時,不能直接對字元陣列進行賦值,可以使用strcpy對字元陣列進行賦值。char a this is my name and what s your name char b my name is wang tiqn qiao char c 30 strcpy a,b ...