gpt4 book ai didi

c++ - strcat() 中的奇怪返回行为

转载 作者:行者123 更新时间:2023-12-01 14:47:18 25 4
gpt4 key购买 nike

void mystrcat(char* to, const char* from) {
while (*to) to++;
while (*from) *to++ = *from++;
*to = '\0';
}

int main() {
char addthis[]= "rest of the sentence";
char start_of[] = "going to add ";


mystrcat(start_of, addthis);

cout << "after strcat(): " << start_of<< endl;
}
即使我将 mystrcat 函数替换为以下函数,行为也是相同的。
char* mystrcat(char* to, const char* from) {
while (*to) to++;
while (*from) *to++ = *from++;
*to = '\0';
return to;
}
对我来说很奇怪,当我调用 mystrcat 时,我没有分配给 char* 仍然没有编译器的提示。我在这里错过了什么?如果无论如何,您可以使用 void 返回类型优化我的代码吗

最佳答案

字符串 start_of声明的长度仅足以容纳它初始化的字符串。因此,尝试附加到它的写入超出了数组的末尾。这会调用 undefined behavior .
您需要使数组足够大以容纳连接的字符串。

char start_of[50] = "going to add ";

关于c++ - strcat() 中的奇怪返回行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63040767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com