求指教为什么这个程序会出问题额
#include<iostream>
using namespace std;
void mystrcopy(char* a,char* b)
{
while(*a++=*b++);
}
int main(){
char *a;
char *b="wo shi aaa";
mystrcopy(a,b);
cout<<a<<endl;
}
就是简单的字符串复制啊
[解决办法]
你定义了字符指针a,但是你没有给它分配实际的内存,你往这个指针所指向的内存拷贝数据的时候就是非法的,导致了错误。你最好在使用这个指针之前进行分配内存。
- C/C++ code
#include<iostream>#include<string.h>using namespace std;void mystrcopy(char* a,char* b){while(*a++=*b++);}int main(){char *a;char *b="wo shi aaa";a = new char[strlen(b)+1];mystrcopy(a,b);cout<<a<<endl;}
[解决办法]
你的指针乱值,而且复制之前没有分配空间,应该如下:
- C/C++ code
#include<iostream>using namespace std;void mystrcopy(char* a, char* b){ char* tmp = a; while((*tmp++ = *b++) != '\0');}int main(void){ char a[16]; char* b = "wo shi aaa"; mystrcopy(a, b); cout << a << endl;}