gpt4 book ai didi

c - 如何在中间包含零的c中找到char数组的实际结尾

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:39 25 4
gpt4 key购买 nike

我试图在 c 中找到 char 数组的大小。中间有零,所以 strlen 没有给出正确的答案。下面是一个示例场景。

char buffData[256];
buffData[0] = 0x89;
buffData[1] = 0x32;
buffData[2] = 0x00;
buffData[3] = 0x02;
buffData[4] = 0x01;

如何找到合适的长度。ps: strlen 会给出 2 这是错误的

我要答案5!

最佳答案

甚至比

int len = sizeof(buffData) / sizeof(char);

你可以写得更笼统:

int len = sizeof(buffData) / sizeof(buffData[0]);

如果您(或其他人)更改 buffData 的声明,它仍然有效,例如:

double buffData[256];

如果您想及时知道数组中实际有多少个元素,至少有两种选择:

  1. 跟踪元素计数,每次插入元素时计数器递增,删除元素时递减

    char buffData[256];
    int buffData_n = 0;

    buffData[0] = 0x32;
    buffData_n++;
  2. memset 内存为零,或对其进行零初始化,这样您就可以显式计算非零元素:

    int i = 0;
    for ( ; i < 256 && buffData[i]; i++);
    printf("There is %d elements in the array now\n", i);

如果你想允许用 0 填充间隙,并且你可以指定间隙的大小:

    int n = 0, i = 0;
// gap size 2 max
for ( ; i < 255; i++)
{
if (buffData[i]==0 && buffData[i+1]==0) break;
if (buffData[i]) n++;
}
printf("There is %d elements in the array now\n", n);

关于c - 如何在中间包含零的c中找到char数组的实际结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com