位置:首頁(yè) > 軟件操作教程 > 編程開(kāi)發(fā) > C語(yǔ)言 > 問(wèn)題詳情

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

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

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

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

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

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

(3)說(shuō)明

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

②連接前兩個(gè)字符串都有結(jié)束標(biāo)志'\0'連接后“字符數(shù)組”中存儲(chǔ)的字符串的結(jié)束標(biāo)志'\0'被舍棄,只在目標(biāo)串的最后保留一個(gè)'\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ù)組名的形式,而后面的字符串既可以是一個(gè)字符數(shù)組,也可以是字符串常量。例如:

    strcat (strl, "Boy!");

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

    char str1[20];

    char str2[10]=" Boy!"; 

    strcat(strl,str2);

運(yùn)行時(shí)可能會(huì)報(bào)內(nèi)存讀寫(xiě)錯(cuò)誤。

(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í)際長(zhǎng)度 */

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

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

{

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

}

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


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

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