码迷,mamicode.com
首页 > 其他好文 > 详细

使用strcat连接字符串

时间:2015-04-06 18:50:09      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
using namespace std;


int main(int argc, char* argv[])
{	
	char* str1 = "hello";
	char* str2 = "china";
	char* str3 = NULL;
	str3 = new char[strlen(str1) + strlen(str2) + 1];
	str3[0] = '\n';
	strcat(str3,str1);
	strcat(str3,str2);

	cout<<str3<<endl;
	return 0;
}
上面的程序代码有什么问题?输出什么?
答案:str3指向的堆内存没有初始化,不含有字符串结束符号。输出随机值
strcat函数 strcat(char* dest, const char* src)
把字符串src加到dest字符串之后,dest字符串结束的位置就是新连接的src的位置。
<pre name="code" class="cpp">str3 = new char[strlen(str1) + strlen(str2) + 1];
new申请的内存并没有被初始化,内存中的值都是随机数。调用strcat不能把str1的内容复制呆内存块当中,并且会导致数组越界。

应该把  str3[0] = '\0';
#include <iostream>
using namespace std;




int main(int argc, char* argv[])
{<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>char* str1 = "hello";
<span style="white-space:pre">	</span>char* str2 = "china";
<span style="white-space:pre">	</span>char* str3 = NULL;
<span style="white-space:pre">	</span>str3 = new char[strlen(str1) + strlen(str2) + 1];
<span style="white-space:pre">	</span>str3[0] = '\0';
<span style="white-space:pre">	</span>strcat(str3,str1);
<span style="white-space:pre">	</span>strcat(str3,str2);


<span style="white-space:pre">	</span>cout<<str3<<endl;
<span style="white-space:pre">	</span>return 0;
}
hellochina

使用strcat连接字符串

标签:

原文地址:http://blog.csdn.net/djb100316878/article/details/44903343

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!