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 要怎么改
#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这个头文件.