我创建了一个与strcat
基本相同的函数。
void Mystrcat(char* s, char* t)
{
int j, i=0;
for ( j = 0; s[j] != '\0'; j++);
for (i = 0; t[i] != '\0'; i++, j++)
s[j] = t[i];
}
我无法理解我错过了什么。连接工作除了在最后一个charcarter中,我总是得到额外的space
。
Input: s = "My " t="House" , output = "My House "
答案 0 :(得分:4)
您无法终止输出,您最后不会写'\0'
。您可以将第二个循环改为经典复制循环:
while (s[j++] = t[i++])
;
这将在复制终结符后停止。
您的代码可能具有未定义的行为,恰好表现为额外的空间。
此外,如果您的输入确实是"My "
和"House"
,那么正确的输出当然应该是
"My House"
保留输入末尾的所有空格。
正如评论中指出的那样,您无法修改字符串文字,当然您需要分配空间。
这样的事情:
int main(void)
{
char s[100] = "My ", *t = "House";
Mystrcat(s, t);
printf("Got '%s'\n", s);
return 0;
}
打印:
Got 'My House'
正如所料。