关于C++中strcpy的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:15:25
下面的程序,编译时不报错,但执行就弹出对话框说出现问题,执行不了。各位大侠指点一下!
#include<iostream>
using namespace std;
#include <string>

int main()
{
char *str1=new char[25];
char *str2="to you";

str1="congratulation";
cout<<strcpy(str1,str2);

return 0;
}
不是最终输出congratulation to you,
是输出 to you

strcpy 是吧第二个参数的内容copy给第一个参数的位置, 你这里第一个参数给了个常量,copy当然就出错

至于你上面 str1 = new ... 这个怎么说呢, 貌似很多人不理解 = 表示啥意思。 后面的赋值会改掉前面的赋值,这不是常识么?。。

你程序的本意应该是:最终输出congratulation to you,是吗?
问题:
(1)你定义的str1是char型指针,不能给它赋值字符串"congratulation"; 使用strcpy(str1,"congratulation");
(2)连接两个串,用strcat()

代码如下:
#include<iostream>
using namespace std;
#include <string>

int main()
{
char *str1=new char[25];
char *str2=" to you";
strcpy(str1,"congratulation");
cout<<strcat(str1,str2);

return 0;
}

改成这样绝对正确
#include <string>
#include<iostream>
using namespace std;

int main()
{
char *str1=new char[25];
char *str2="to you";

strcpy(str1,"congratulation");
cout<< strcat(str1,str2) << endl;
// 动态分配的内存最后需要释放
delete[] str1;

ret