CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

怎么同样是在vc6里面编译,有的地方编译通过,有的地方就报越界错误呢?

楼主njzsj(沧海一声笑)2004-12-02 18:23:18 在 C/C++ / C语言 提问

CHAR UserCode[5]="\0\0\0\0\0"; 问题点数:50、回复次数:15Top

1 楼milozy1983(Detective)回复于 2004-12-02 18:29:21 得分 6

you   should   declare   the   size   of   array   is   6   and   5   is   not   savelyTop

2 楼njzsj(沧海一声笑)回复于 2004-12-03 08:26:03 得分 0

在别人的代码里面有这句话,他的程序能编译通过,而我单独把这句话拿出来编译就会报错,请帮忙解决!Top

3 楼goodluckyxl(被人遗忘的狗)回复于 2004-12-03 08:31:55 得分 10

CHAR UserCode[]="\0\0\0\0\0";Top

4 楼imRainman(雨人)回复于 2004-12-03 08:41:22 得分 1

把完整的代码贴出来看看Top

5 楼wwxsoft(婉儿)回复于 2004-12-03 08:46:40 得分 1

markTop

6 楼njzsj(沧海一声笑)回复于 2004-12-03 09:05:28 得分 0

#include   <windows.h>  
  #include   <stdio.h>  
  #include   <ostream.h>  
   
  typedef   BYTE                                 mmsSubISDN_T[10];  
   
  SHORT   ReverseBCD(BYTE   *BCD,   SHORT   size)  
  {  
          BYTE                                 ch   =   0;  
          SHORT                               i     =   0;  
   
          for   (i=0;   i<size;   i++)  
          {  
                  ch   =   BCD[i];  
                  BCD[i]   =   (ch>>4)+((ch&0x0f)<<4);  
          }  
   
          return   size;  
  }  
   
   
   
  SHORT   BCDToString(CHAR*   Buffer,   BYTE*   BCDStr,   SHORT   Size)  
  {  
          SHORT                               i   =   0;  
          SHORT                               j   =   0;  
   
          for   (j=0;   j<Size;   j++)  
          {  
                  if   (BCDStr[j]   <=   15)  
                          i   +=   sprintf(Buffer+i,   "0%X",   BCDStr[j]);  
                  else  
                          i   +=   sprintf(Buffer+i,   "%X",   BCDStr[j]);  
          }  
   
          return   i;  
  }  
   
   
   
  WORD   FindIndex(mmsSubISDN_T     User_Isdn)  
  {  
  INT   low,up,m=0;  
   
  CHAR UserCode7[20];  
  CHAR UserCode[20]="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";  
  LONG AreaCode;  
  int   iIsdnLength   =   0;  
  int   i   =   0;  
  int   j   =   0;  
   
  memset(UserCode,0xff,   sizeof(UserCode));  
   
   
  memset(UserCode7,0x00,   sizeof(UserCode7));  
  memcpy(UserCode,User_Isdn,sizeof(mmsSubISDN_T));  
   
  ReverseBCD((BYTE   *)UserCode,sizeof(mmsSubISDN_T));  
   
  while   (   i   <   sizeof(mmsSubISDN_T))  
  {  
   
  if(((BYTE)UserCode[i]   &   (BYTE)0xf0)   ==   (BYTE)0xf0)  
  {  
  break;  
  }  
   
  if(((BYTE)UserCode[i]   &   (BYTE)0x0f)   ==   (BYTE)0x0f)  
  {  
  iIsdnLength   =   iIsdnLength   +   1;  
  break;  
  }  
   
  i++;  
  iIsdnLength   =   iIsdnLength   +   2;  
   
  }  
   
  //if(iIsdnLength   >   10)iIsdnLength   =   10;  
  cout   <<   iIsdnLength   <<   endl;  
   
  BCDToString(UserCode7,(BYTE   *)UserCode,10);  
  cout   <<   UserCode7   <<   endl;  
   
  for(j   =   iIsdnLength   ;   j   >=   0;   j--)  
  {  
  // UserCode7[9]   =   0;  
  UserCode7[j]   =   0;  
  cout   <<   UserCode7   <<   endl;  
   
  /*delete   by   wgw*/  
  AreaCode   =   atoi((const   char   *)UserCode7);  
   
   
  cout   <<   AreaCode   <<   endl;  
   
  }  
   
  return   0;  
   
  }  
   
   
  int   main()  
  {  
   
  mmsSubISDN_T   a   ={0x01,0x03,0x05,0x01,0x02,0x05,0x00,0x00,0x00,0x00};  
   
  FindIndex(a);  
   
  return   0;  
  }Top

7 楼njzsj(沧海一声笑)回复于 2004-12-03 09:08:27 得分 0

这是我整理的自己调试的代码,原来的程序只是各个函数分布在不同的文件里面,我什么都没有修改!!!!!但是这边却编译不通过!!!哎,搞不清楚了,编译不通过还能找到解释的理由,可是那边却编译通过了,而且FindIndex代码用了很久!!!Top

8 楼hunter606(混特)回复于 2004-12-03 09:23:13 得分 10

CHAR UserCode[20]="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";  
  LONG AreaCode;  
  int   iIsdnLength   =   0;  
  int   i   =   0;  
  int   j   =   0;  
   
  memset(UserCode,0xff,   sizeof(UserCode));  
   
  CHAR UserCode[20]="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";  
  沒有必要,賦初值後又被覆蓋。Top

9 楼imRainman(雨人)回复于 2004-12-03 09:57:45 得分 1

汗,这么奇怪的问题...  
   
  能不能把整个程序发到我的邮箱里呢?imRainman@hotmail.com  
   
  我来帮你研究一下~Top

10 楼pacman2000(pacman)(影子传说)回复于 2004-12-03 10:01:21 得分 1

呵呵!   纯粹是无聊的写法。   直接用memset的那句就可以了啊。Top

11 楼njzsj(沧海一声笑)回复于 2004-12-03 10:21:09 得分 0

是很无聊,但是怎么就能编译通过呢?Top

12 楼njzsj(沧海一声笑)回复于 2004-12-03 10:21:59 得分 0

全部代码就不发了,发了你也无法编译运行,实在太大了.真是不好意思了!Top

13 楼wl2k(没人知道)回复于 2004-12-03 14:29:38 得分 5

与程序无关,应该是你工程设定的问题。Top

14 楼sunlu_eric(天使预备役)回复于 2004-12-03 14:43:21 得分 15

钱能的C++上说,如果我定义char   a[5];  
  这个字符串,我只可以存四个字符,而不是五个(只是自己看书后的理解)!  
  (意思是说这个字符串为a[0],a[1],a[2],a[3],a[4],最后一个a[4]留存NULL.)  
  但我的如果存五个都没有问题,是不是和不同的编译器也有关,  
  其实我觉得到不用限的太死,可以把树组定义的大些,不过在用的时候注意就可以了,  
  反正我认为比不够好的多!!!  
  Top

15 楼njzsj(沧海一声笑)回复于 2004-12-03 16:03:31 得分 0

搞了半天,原来标准C是支持这种初始化的.Top

相关问题

  • vc编译错误
  • VC编译错误——急
  • VC++编译错误问题
  • vc++编译错误,请求帮助我
  • 一个VC的编译错误.
  • VC编译时错误,帮我看看
  • vc++6.0,编译出现的LNK2005错误。
  • VC++2002下ARX开发编译错误
  • 编译错误
  • 编译错误!!

关键词

  • 编译
  • 编译通过
  • charusercode
  • 这句话
  • 有的地方
  • short
  • ch
  • byte
  • include
  • size

得分解答快速导航

  • 帖主:njzsj
  • milozy1983
  • goodluckyxl
  • imRainman
  • wwxsoft
  • hunter606
  • imRainman
  • pacman2000
  • wl2k
  • sunlu_eric

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo