strcat
char* strcat(char* destination, const char* source);
1.源字符串必须以’\0’结束
2.目标空间必须足够大,能容纳下源字符串的内容
3.目标空间必须可修改
strcat函数的分析
int main() {
char* arr1[10] = "abcd";
const char* arr2[] = "mf";
strcat(arr1,arr2);
printf("%s\n", arr1);
getchar();
return 0;
}
追加前
追加后
最后输出为abcdmf
strcat将’\0’拷贝过去了吗?
测试代码
int main() {
char arr1[10] = "abcd\0#####";
const char arr2[] = "mf";
strcat(arr1,arr2);
printf("%s\n", arr1);
getchar();
return 0;
}
追加前
追加后
说明strcat函数也将源字符串中的’\0’追加了过去
strcat函数的模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest,char* scr) {
char* dest1 = *dest;
assert(dest!= NULL);
assert(scr != NULL);
//找到目标位置
while (*dest) {
dest++;
}
// 追加
while (*dest++ = *scr++) {
;
}
return dest1;
}
int main() {
char arr1[10] = "abcd\0#####";
const char arr2[] = "mf";
my_strcat(arr1,arr2);
printf("%s\n", arr1);
getchar();
return 0;
}
注意
while (*dest) {
dest++;
}
区别
while (*dest++) {
;
}
第一种dest 为‘\0’后就不执行dest++操作了,第二种dest 为‘\0’后任然执行dest++操作。