strcat函数
C 库函数 char *strcat(char *dest, const char *src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾。
- 正确用法:
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[30] = "abcdef";
char arr2[] = "abc";
strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
输出:
abcdefabc
- 错误用法:
#include<stdio.h>
#include<string.h>
int main(void)
{
char arr1[] = "abcdef";
char arr2[] = "abc";
strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
输出:
- 原因:在错误用法中数组arr1内存大小固定,只能存放6个字符,使用strcat函数将arr2加在arr1之后,超出了arr1本身内存的大小,使得内存溢出。
- 该函数使用时要注意的问题便是防止内存溢出,即在使用之初是就定义好足够的内存空间。
函数的构建
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* arr1, char* arr2);
int main(void)
{
char arr1[30] = "abcdef";
char arr2[] = "abcdef";
my_strcat(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
char* my_strcat(char* arr1, const char* arr2)
{
assert(arr1);
assert(arr2);
char* ret = arr1;
while (*arr1 != '\0')
{
arr1++;
}
while (*arr1++ = *arr2++)
{
;
}
return ret;
}