C語言的strcpy 和strncpy 函式

2021-12-29 21:29:36 字數 1688 閱讀 1100

strcpy()函式

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]);

return 0;

}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

quizstrcpy的其他屬性:

strcpy()的返回型別是char *,該函式返回的是第1個引數的值,即乙個字元的位址 第乙個引數不必指向陣列的開始,這個屬性可用於拷貝陣列的一部分。 strcpy()把源字串中的空字元也拷貝在內。

strncpy()函式

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

C語言 strcpy和strncpy的缺陷!

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

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 ...