位置:首頁 > 軟件操作教程 > 編程開發(fā) > C語言 > 問題詳情

C語言 字符串連接函數(shù)strcat()與strncat()

提問人:劉團(tuán)圓發(fā)布時間:2020-11-30

strcat()與strncat()都是C語言中實(shí)現(xiàn)兩個字符串連接的函數(shù)。

(1)調(diào)用方式

    strcat(字符數(shù)組,字符串)

(2)函數(shù)功能:把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中?!白址麛?shù)組”中原來的結(jié)束標(biāo)志被“字符串”的第一個字符覆蓋,而“字符串”在操作中未被修改。

(3)說明

①由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以便容納連接后的目標(biāo)字符串;否則會因長度不夠而產(chǎn)生問題。

②連接前兩個字符串都有結(jié)束標(biāo)志'\0'連接后“字符數(shù)組”中存儲的字符串的結(jié)束標(biāo)志'\0'被舍棄,只在目標(biāo)串的最后保留一個'\0'。

例如:

char strl[20]=" Hello"; 

char str2[10]=" Boy!";

strcat(strl,str2);

 連接前str1

H

e

l

l

o

\o

\0

\0

\o

\0

\0

\0

\0

\0

\0

\0

\0

\0

\0

\0

連接前str2



B

o

y

!

\0

\0

\0

\0

\0


連接后str1


H

e

l

l

o


B

o

y

!

\0

\0

\0

\0

\0

\0

\0

\0

\0

\0

③字符數(shù)組必須是字符數(shù)組名的形式,而后面的字符串既可以是一個字符數(shù)組,也可以是字符串常量。例如:

    strcat (strl, "Boy!");

④如果不對字符數(shù)組賦值,則字符數(shù)組中的各內(nèi)容是無法預(yù)知的,所以如果使用類似如下程序:

    char str1[20];

    char str2[10]=" Boy!"; 

    strcat(strl,str2);

運(yùn)行時可能會報(bào)內(nèi)存讀寫錯誤。

(4)實(shí)現(xiàn)strcato函數(shù)功能的代碼為:

char strl[20]=" Hello";

char str2[10]=" Boy";

int i,j,k;

for(i=0;strl[i]!='\0';i++);       /*i是str1的實(shí)際長度 */

for(j=0;str2[j]!='\0';j++);      /*j是str2的實(shí)際長度 */

for(k=0;k<j;k++)                  /*將str2的內(nèi)存逐個賦值到str1中 */

{

    strl[i+k]=str2[k];

}

strl[i+k]=0;                     /*添加字符串結(jié)束標(biāo)志,'\0'也可以寫成0 */


繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部