【发布时间】:2018-09-22 16:11:45
【问题描述】:
我想创建一个 C strcat 函数的实现来连接 2 个字符串而不修改任一输入字符串。这就是我目前所拥有的
char *my_strcat(char* s1, char* s2)
{
char* p = malloc(strlen(s1) + strlen(s2) + 1);
while (*s1 != '\0')
*p++ = *s1++;
while (*s2 != '\0')
*p++ = *s2++;
*p++ = '\0';
return p;
}
我想用 s1 和 s2 中的所有字符填充 p,但是这段代码什么也不返回。可以使用一些帮助。
【问题讨论】:
-
一点点rubber duck debugging 应该可以帮助您了解您的问题。
-
橡皮鸭调试...或使用调试器单步调试代码。两者都应该指出问题所在 - 在递增后返回“p”,而不是 malloc() 返回的原始“p”。另外:HostileFork 对
const的建议绝对是个好主意。 -
char *my_strcat(char* s1, char* s2) { if (char* p = (char*)malloc(strlen(s1) + strlen(s2) + 1)) { char c, *sz = p; do { *p++ = c = *s1++; } while (c); p--; do { *p++ = c = *s2++; } while (c); return sz; } return 0; } -
代码有什么问题?看着它,它应该连接两个字符串,而且你也不要改变输入。那么,有什么问题呢?