strcpy为什么报错啊?

悠悠小法 2012-05-01 03:52:39
int _tmain(int argc, _TCHAR* argv[])
{
char* deck[52];
char* suit[4]={"Hearts","Diamonds","Clubs","Spades"};
strcpy(deck[2],suit[3]);
}
...全文
281 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
叫我大师 2012-05-01
  • 打赏
  • 举报
回复
如果要动态进行内存分配可以用new和delete或者malloc()和free()这两对动态操作进行,具体可以参见百度百科,或者觉得麻烦,可以把deck改成字符数组[Quote=引用 4 楼 的回复:]

strcpy()的函数原型是extern char *strcpy(char *dest,const char *src);具体实现
char *strcpy(char *dest,const char *src){
char * strDestCopy=strDest; //[3]
if ((strDest==NULL)||(strSrc==NULL)) //[1]
throw "In……
[/Quote]
叫我大师 2012-05-01
  • 打赏
  • 举报
回复
strcpy()的函数原型是extern char *strcpy(char *dest,const char *src);具体实现
char *strcpy(char *dest,const char *src){
  char * strDestCopy=strDest; //[3]
  if ((strDest==NULL)||(strSrc==NULL)) //[1]
  throw "Invalid argument(s)"; //[2]
  while ((*strDest++=*strSrc++)!='\0'); //[4]
  return strDestCopy;
  }
从实现可以看出这个函数是对指针指向的内容进行操作,而你的代码里面没有deck数组元素内容是指针,这些指针并没有一个明确的指向内容,当然就操作不了了
悠悠小法 2012-05-01
  • 打赏
  • 举报
回复
char* deck[52];如何动态分配内存啊?
northcan 2012-05-01
  • 打赏
  • 举报
回复
或者:
char deck[52][50];
char* suit[4]={"Hearts","Diamonds","Clubs","Spades"};
strcpy(&deck[2][0], suit[3]);
northcan 2012-05-01
  • 打赏
  • 举报
回复
deck[2]指针,没有指向动态分配的有效内存。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧