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

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

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

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)
返回顶部