自己编写的C++复制字符串小问题~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:12:40
#include <iostream>

using namespace std;

void copystr(char *, char *);

int main(void)
{
char *str1 = NULL, *str2 = "abc";
copystr(str1, str2);
cout << str1 << endl;
return 0;
}

void copystr(char *p1, char *p2)
{
while(*p2 != '\0')
*p1++ = *p2++;
*p2 = '\0';
}

原本是想把STR2中的字符串连同结尾的'\0'一起复制到STR1中..实现类似C语言的strcpy函数的原理....虽然我后来自己变通了一下程序可以顺利实现复制...但是想知道上面我第一次写的程序为什么不能运行?(一运行就出现类似指针非法修改某区间内存的问题~~~)...我只是想知道详细的出错原因..谢谢大家
不好意思,刚才是我大错了,*p2 = '\0'一句应该是*p1 = '\0'才对..

首先str1不能少于str2,所以应该先给str1一个初始化空间

比如char *str1=newchar[5]

然后在最后str2没动,它的最后就是正常的结束'\n',应该是str1的最后要加个'\n'
所以*p2 = '\0'; 应该改成*p1 = '\0';
然后就行了

不能用while 吧
他是个循环来的拉

单步跟着调试一下就知道了