替代不屈不挠0

时间:2018-10-23 18:42:43

标签: c arrays string-length

是否有更好的方法来获取包含数字的正确长度的数组?

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

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

,但是效率不高,在某些情况下也会返回意外的值。在这种情况下,预期的输出为3。

有没有要使用的功能?

2 个答案:

答案 0 :(得分:3)

整数数组不是字符串。 C数组本质上不包含长度信息。 $pattern = '/(?<=^|\/).+?(?=\/|$)/'; $phrases = []; $y = preg_replace_callback($pattern, function($phrase) use (&$phrases) { $separator = in_array($phrase[0], $phrases) ? '--' : '-'; $phrases[] = $phrase[0]; return str_replace(' ', $separator, $phrase[0]); }, trim($x)); 的工作方式是C字符串以 null终止,这意味着最后一个字符为strlen(null字符),该字符为0。否则,将无法知道数组有多长。

我想您可能想做一个NUL数组。您可以张贴正在使用的阵列吗?

答案 1 :(得分:0)

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

唯一的选择是

  • 使用以某些特殊字符结尾的字符串(例如null)或
  • 跟踪创建字符串时的长度。

FWIW,如果它不是以null终止的,它实际上不是C中的字符串,它只是包含字符的内存,而您恰好将其解释为字符串。