szBufDisplay[1000]中放的实际数据,数据中间是有可能会出现0。想知道数据的全长?

解决方案 »

  1.   

    如果求第一个0前的长度,就用strlen
    如果中间有许多0,但是靠头放,那就从1000开始倒循环,第一个不为0的位置就是结束位置
      

  2.   

    即使没有给szBufDisplay放数据,sizeof也返回1000的。
    你在外头纪录嘛!实在不行定义一个结构
    struct
    {
       DWORD dwSize;
       char  szBufferDisplay[1000];
    } BUFFDISP;BUFFDISP buf = new BUFFDISP;
    你加数据进来就设dwSize,把buf传给别人,别人也知道大小了。
      

  3.   

    szBufDisplay[1000]中放的实际数据,数据中间是有可能会出现0。想知道数据的全长?字符的结尾就是靠0来判断,遇到0就是结束.否则,系统怎么知道你的字符传的第几个0是结束标志?
    当然,自己写函数是可以实现的
      

  4.   

    oyljerry, 即使没有往szBufDisplay里头放数据, sizeof也返回1000的。
    放了字符串比如“abc”进去,sizeof也返回1000的。
    sizeof求的是这个空间的大小。
      

  5.   

    如果是字符串的话,建议使用strlen(),来进行处理!
      

  6.   

    cut9(切瓜玩)可行,我已经那样做了。我是想问有没有现成的api可调,与我输出的数字比一下。我感觉我数错了。当然,我的数据中有0,所以sizeof和strlen不行
      

  7.   

    greenery(greenery),你要考虑清楚啊,你的办法不行的。
     比如:我的数据: 0x01,0x02,0x03,0x00,0x00,0x00
     6个字节,你那样求出来是3个字节,而且要先ZeroMemory buffer.
     
     没有现成的API做这个事情的。