首先定义个BYTE数组 BYTE A[100],但实际中不一定用完,我怎么能获得它的有效长度?

 我来答
zxpointer
2010-08-20 · TA获得超过4100个赞
知道大有可为答主
回答量:1868
采纳率:33%
帮助的人:1199万
展开全部
一个方法就是先把整个数组里的元素都置0.
然后因为你会向这里面写入数据嘛, 那就设置一个指针指向这个数组
通知指针的移动来读取当前指向的内存单元中的数据, 判断是否为0
因为要与0比较,因此最好首先让指针指向数组尾部, 然后使指针向前移
这样移动直到读取到第一个不为0的数据为址,通过循环我们很容易计算出指针移动了多少位, 总数是100,作个差就得到数据的长度了

为什么要让指针从后边移,因为你不保证数据中间会不会有0,比如一组数据
1230456789 如果是这样它只能计算机123的长了
但你从后边开始就不会出现这种问题。

随之带来的还有个BUG , 如果数据是 1234567890 怎么办?
那个0本来是我的数据,但按上面的方法移动指针,这个0会被忽略

那怎么办? 我先说下我学的是C语言,好像没见过BYTE这个类型,我个人理解它大概是存放二进制数据的,010101 这样的 ,如果真的只是存01 那好办了点,初始化数组的时候全置0和1以外的数 2 3 4 。、。。都可以。
如果不是像我上边说的这种数据,那就换成字母,反正我也想不出什么好办了 , 基本上找到一个数据中不可能出现的那个东西(数字,字母或是其它的东西)然后整个数组全置成这个东西。
L_o_o_n_i_e
2010-08-20 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5117万
展开全部
如果是全局量 BYTE A[100],编译器会自动初始化为全0
#include <windows.h>
#include <stdio.h>
BYTE a[100]; // 自动初始化为全0
void main()
{
int i;
for (i=0;i<100;i++) printf("%2x",a[i]);
}

如果是局部量 需要自己 初始化

你的合理的数值,应当有个 上下范围,或特征范围。

你可以先初始化 为 范围以外的值,以后,只要测定每个元素的数值,就知道有效长度。

当然,你也可以在使用中自己记录下使用长度。你也可以用动态数组,用malloc 开始分配一个长度,后面根据需要 用 realloc 增加长度。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cyx6689296
2010-08-20 · 超过10用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:35.8万
展开全部
如果你定义的这个数组的类型是字符型的话,那么当你输入一个字符串的时候,要获取有效长度,就用strlen函数! 但如果你定义的是整形之类的话,你在输入的时候,应该会保留你最后输入的那个数的下标,十几长度也就是你最后一个输入的下标加1。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
maltose8t88
2010-09-03 · TA获得超过9239个赞
知道大有可为答主
回答量:1353
采纳率:0%
帮助的人:2774万
展开全部
每次读取byte[]数组长度个字节。也就是说,你byte数组长度多少。就读取多少到byte数组里
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xunxunnuaa
2010-08-25 · TA获得超过651个赞
知道小有建树答主
回答量:548
采纳率:0%
帮助的人:443万
展开全部
拷贝完写个结束符号不就知道了么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式