strcpy函数怎么用在线等!

来源:百度知道 编辑:UC知道 时间:2024/06/24 01:57:42
int _tmain(int argc, _TCHAR* argv[])
{
char *s="1234567,0 4343131,0 4354354545";
char *s2=",100 ";
strcpy(s,s2);
cout<<s;
return 0;
}
总是出现
Unhandled exception at 0x102aece9 (msvcr80d.dll) in tihuan.exe: 0xC0000005: Access violation writing location 0x00417708.
望高手指教!
在线等!

你如果将char *s的赋值改变成下面
char s[]="1234567,0 4343131,0 4354354545";
char *s2=",100";
strcpy(s,s2);

这样就ok了
出错原因:
"1234567,0 4343131,0 4354354545"是一个常量,你把一个常量的首地址传给指针s,而s所指的空间是只读的(因为是常量),strcpy出错,因为你要给你段只读空间赋值……

明白了吧。
参考:http://bbs2.chinaunix.net/thread-1370628-1-1.html