替代 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 中的字符串,它只是包含您碰巧解释为字符串的字符的内存。
有没有更好的方法来获得包含数字的数组的正确长度?
我有一个数字数组: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 中的字符串,它只是包含您碰巧解释为字符串的字符的内存。