「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战」。
strcat()函数
strcat()函数主要用来拼接字符串,用于将一个字符串拼接到另一个字符串的后面。下面通过一个简单的例子来演示一下这个函数的使用方法。
int main()
{
char str1[10]="123";
char str2[4]="abc";
printf("str1:%s\r\n",str1);
printf("str2:%s\r\n",str2);
strcat(str1,str2);
printf("str1:%s\r\n",str1);
printf("str2:%s\r\n",str2);
system("pause");
return 0;
}
定义了两个字符串str1和str2,首先将两个字符串打印出来,接着使用strcat()函数将str2字符串拼接到字符串str1的后面,最后再将两个字符串打印一遍。输出结果如下: 通过输出的结果可以看到字符串2的确已经被拼接到了字符串1的后面。 但是使用这个函数的时候要注意一点,这个函数默认是不检测字符串1的长度的,如果字符串1的长度不能够容纳下字符串2,就可能会导致字符溢出。比如在这里给字符串1追加一个比较长的字符串2。 当程序运行完成之后,软件出现了错误。这就说明在使用strcat()函数向str1字符串追加内容的时候,由于str1空间比较小,而追加的字符又很多,就会导致多出来的字符溢出到相邻的存储空间中,导致软件运行奔溃。
strncat()函数
为了解决正问题,系统又提供了一个新的字符串追加函数strncat()。这个函数相比strcat()函数多了一个参数,第三个参数用于设置追加内容的长度。这样在追加字符串的时候,就可以控制追加的字符长度,不会出现溢出的情况。
int main()
{
char str1[10]="123";
char str2[]="abcdefghjhijkl";
int cnt = 0,cnt1 = 0,cnt2 = 0;
printf("str1:%s\r\n",str1);
printf("str2:%s\r\n",str2);
cnt = strlen(str1);
cnt1 = sizeof(str1) / sizeof(str1[0]);
cnt2 = cnt1 - cnt;
printf("%d,%d,%d\r\n",cnt,cnt1,cnt2-1);
strncat(str1,str2,cnt2);
printf("str1:%s\r\n",str1);
printf("str2:%s\r\n",str2);
system("pause");
return 0;
}
首先打印原始的字符串1和字符串2内容,接下来使用strlen()函数计算出字符串1实际占用的大小,使用sizeof()函数计算出字符串的总空间大小,然后计算这两个数据的差,就是字符串1中的剩余空间。当使用strncat()函数拼接字符串的时候,最后一个参数就是字符串1中的剩余空间大小。这样在拼接字符串的时候,就不会导致数据溢出了。
通过打印的结果可以看出,拼接后的字符串1,最后拼接的字符只是截取了字符串2的一部分,并没有将字符串2的内容全部拼接进去。拼接的字符串长度为6。计算出来字符串剩余长度为7,但是这里面也把字符串最后一位为空字符’\0′,计算进去了。所以在使用strncat()函数时,最后一个参数的长度要减1,给字符串1留一个空白字符的位置。
今天的文章C语言学习笔记—字符串拼接函数 strcat() 和 strncat()分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15202.html