c编程 strcpy

来源:百度知道 编辑:UC知道 时间:2024/07/05 22:10:42
#include "stdafx.h"
#include <malloc.h>
void copy_string(char *from,char *to)

{

while((*to++=*from++)!='\0');

}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{

char *p1="abcdef",*p2;

copy_string(p1,p2);

return 0;
}
这样运行程序会出现First-chance exception in s.exe: 0xC0000005: Access Violation.的问题 而将 char *p1="abcdef",*p2;的*p2改为p[10]就可以了. 我想知道问题出现的原因 请高手解答.如果不想改动*p2 要怎么改

char *p1="abcdef";
char *p2=new char;
把指针初始化一下~

char *p2;//没有为p2指定内存,只是定义了一个指针向量.
如果想这么用,要先给p2分配内存.语句如下:
p2=malloc(sizeof(char)*(strlen(p1)+1));//要包含memory.h这个头文件.