|
发表于 2019-8-3 23:25:58
|
显示全部楼层
本帖最后由 68ui 于 2019-8-4 15:09 编辑
strlen计算的是字符串的长度,而不是缓冲区长度,建议stringcat函数传入缓冲区的大小,你写的循环里面有个strlen(a),这里效率非常慢,每次循环都要计算长度,其实没必要,在一开始的时候计算好长度,每次循环+1即可。
附上我参照你思路的代码:
- char* stringcat(char a[], const char b[]) {
- char* p = a + strlen(a);
- while (*b)
- *p++ = *b++;
- *p = '\0'; // 字符串要以\0结尾
- return a;
- }
复制代码
- char* stringcat(char a[], const char b[]) {
- strcpy(a + strlen(a), b);
- return a;
- }
复制代码 |
|