Macros

给我一支烟!请所有烦恼都能过往如云烟!

导航

linux c下拷贝字符串时却改变其它值

最近在linux c:
  int isSuccess = 0;
char PackTypes[2];
  char ErrMess[100];

  /*解析应答结构体*/
  isSuccess = (int)sBsnResultBody.Success;
  (void)strcpy(PackTypes,sBsnResultBody.PacketType)
  printf("\n是否成功:%d,%s",isSuccess);

在打印isSuccess时的值却为1,着实郁闷了。
最后改为:
 char PackTypes[2];
  int isSuccess = 0;
  char ErrMess[100];

  /*解析应答结构体*/
  isSuccess = (int)sBsnResultBody.Success;
  snprintf(PackTypes,sizeof(PackTypes),"%s",sBsnResultBody.PacketType);
  printf("\n是否成功:%d",isSuccess);
才成功。引起的原因应该是linux下内存分配机制与其它系统不一样(每个系统都不一样吧)。
如果PackTypes在取得数据时发生泄出,他可能会向前覆盖。
有时间得看一下linux的内在分配是什么机制!
有知道的朋友可以指点一下!先谢了。

posted on 2007-06-27 11:15  Macros  阅读(209)  评论(0)    收藏  举报