C strlen函数如何在内部工作?
C strlen函数如何在内部工作?,c,strlen,C,Strlen,strlen()如何在内部工作?函数中是否存在任何固有的错误?strlen通常通过计算字符串中的字符来工作,直到找到\0字符。一个规范的实现是: size_t strlen (char *str) { size_t len = 0; while (*str != '\0') { str++; len++; } return len; } 至于函数中可能存在的固有错误,则没有-它完全按照文档所述工作。这并不是说它没有某些问题,也就是
strlen()
如何在内部工作?函数中是否存在任何固有的错误?strlen
通常通过计算字符串中的字符来工作,直到找到\0
字符。一个规范的实现是:
size_t strlen (char *str) {
size_t len = 0;
while (*str != '\0') {
str++;
len++;
}
return len;
}
至于函数中可能存在的固有错误,则没有-它完全按照文档所述工作。这并不是说它没有某些问题,也就是说:
- 如果您传递的“字符串”结尾没有
,您可能会遇到问题,但从技术上讲,这不是C字符串(a),这是您自己的错\0
- 您不能在字符串中放入
字符,但在这种情况下,它不会是C字符串\0
- 这不是最有效的方法-你可以提前储存长度,这样你可以更快地获得长度
(a) C字符串定义为一系列非终止符字符(除
\0
以外的任何字符)后跟终止符。因此,该定义既不允许序列中的嵌入式终止符,也不允许没有此类终止符的序列。或者,更简洁地说(根据ISO C标准):
字符串是以第一个空字符结尾并包含该空字符的连续字符序列