替代 strlen 不中断 0

Alternative to strlen not breaking on 0

有没有更好的方法来获得包含数字的数组的正确长度?

我有一个数字数组:0, 0, 1,我尝试获取它的长度。它显然会中断 returns 0。我是 C 的新手,但我尝试自定义 strlen 函数:

int custom_strlen(char *str) {
    for(int i = 1; ;i++) {
        if (str[i] == 0) {
            return i;
        }
    }
    return -47;
}

但效率不高,在某些情况下 returns 还出现意外值。在这种情况下,预期输出为 3。

有什么功能可以用吗?

整数数组不是字符串。 C 数组本身不包含长度信息。 strlen 的工作方式是 C 字符串是 null 终止的 ,这意味着最后一个字符是 NUL(空字符),即 0。否则,只有无法知道数组的长度。

我想你可能想要做一个 '0','0','1' 的数组。你能post你正在使用的数组吗?

如前所述,C 字符串以 null 结尾。

唯一的选择是

  • 使用以您观察到的某些特殊字符(如空值)或
  • 结尾的字符串
  • 在创建字符串时跟踪它的长度。

FWIW,如果它不是空终止的,它实际上不是 C 中的字符串,它只是包含您碰巧解释为字符串的字符的内存。