void cat(char *&p, const char *str) { char str[100] = { 0 }; strcat_s(p, 100, str); if (p != nullptr) { strlen(p) + 1; } } int main() { char *p = nullptr; cat(p, "123"); cout << p << endl; //输出123 cat(p, "ABC"); cout << p << endl; //输出123ABC cat(p, "789"); cout << p << endl; //输出123ABC789 delete[] p; return 0; }
时间: 2024-04-03 15:30:57 浏览: 40
C++中string转换为char*类型返回后乱码问题解决
5星 · 资源好评率100%
这段代码有一些问题。首先,在函数`cat`中定义了一个与传入参数同名的局部变量`str`,这会导致在调用`strcat_s`时无法正确地拼接字符串。其次,在`strlen(p) + 1`处,虽然计算了字符串的长度,但并没有对其进行任何操作,这似乎是多余的。最后,在`delete[] p`时,应该先判断`p`是否为空指针,否则可能会导致程序崩溃。
阅读全文