位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 字符串连接函数strcat()与strncat()

提问人:刘团圆发布时间:2020-11-30评论0

strcat()与strncat()都是C语言中实现两个字符串连接的函数。

(1)调用方式

    strcat(字符数组,字符串)

(2)函数功能:把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。

(3)说明

①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则会因长度不够而产生问题。

②连接前两个字符串都有结束标志'\0'连接后“字符数组”中存储的字符串的结束标志'\0'被舍弃,只在目标串的最后保留一个'\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

③字符数组必须是字符数组名的形式,而后面的字符串既可以是一个字符数组,也可以是字符串常量。例如:

    strcat (strl, "Boy!");

④如果不对字符数组赋值,则字符数组中的各内容是无法预知的,所以如果使用类似如下程序:

    char str1[20];

    char str2[10]=" Boy!"; 

    strcat(strl,str2);

运行时可能会报内存读写错误。

(4)实现strcato函数功能的代码为:

char strl[20]=" Hello";

char str2[10]=" Boy";

int i,j,k;

for(i=0;strl[i]!='\0';i++);       /*i是str1的实际长度 */

for(j=0;str2[j]!='\0';j++);      /*j是str2的实际长度 */

for(k=0;k<j;k++)                  /*将str2的内存逐个赋值到str1中 */

{

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

}

strl[i+k]=0;                     /*添加字符串结束标志,'\0'也可以写成0 */


继续查找其他问题的答案?

相关视频回答
回复(0)
X
返回顶部
付费复制

付费获取七天复制权限

限时特价:2.88元/篇原价:10元
联系客服

扫码关注公众号,发送私信联系客服.

微信扫码关注,联系客服

联系客服QQ:2845411722

恭喜您,操作成功,可以复制了

3秒后关闭
X