我创建了一个基本上与 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];
}
我不明白我错过了什么。除了最后一个字符之外,连接有效,我总是得到一个额外的 space
。
Input: s = "My " t="House" , output = "My House "
最佳答案
您无法终止输出,您从未在末尾写入'\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'
正如预期的那样。
关于C 连接字符串额外空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47834193/