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 */
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>