【发布时间】:2026-02-12 10:00:01
【问题描述】:
我最近接受了采访,要求写mystrcat(*s1, *s2, *s3),其中s1 和s2 是源字符串,连接结果由s3 给出。有人告诉我,不要担心s3 的内存分配,并假设s1 和s2 不是空/无效字符串。所以我写了以下蹩脚(粗鲁)的程序。我被告知s3 有问题,或者s3 可能出现问题。你能告诉它是什么/可能是什么吗?
void mystrcat(char *s1, char *s2, char *s3)
{
if (! (s1 || s2 || s3)) return; // one/more pointers are invalid
// copy string s1 into s3
while(*s1) {
*s3 = *s1;
s1++;
s3++;
}
// concatenate string s2 into s3
while(*s2) {
*s3 = *s2;
s2++;
s3++;
}
*s3 = '\0';
}
你能告诉我这里有什么问题吗?有什么更专业的做法?
【问题讨论】:
-
我在第一个 if 语句中缺少一个结束括号,但我认为这只是现在发生的一个错字......?