[英]How does the strlen function work internally?
strlen()
在内部如何工作? 函数中是否有任何固有的错误?
strlen
通常通过计算字符串中的字符来工作,直到找到\\0
字符。 规范的实现将是:
size_t strlen (char *str) {
size_t len = 0;
while (*str != '\0') {
str++;
len++;
}
return len;
}
至于函数中可能存在的固有错误,没有 - 它完全按照文档工作。 这并不是说它没有某些问题,即:
\\0
的“字符串”,您可能会遇到问题,但从技术上讲,这不是 C 字符串(a) ,这是您自己的错。\\0
字符放在你的字符串中,但同样,在这种情况下它不会是一个 C 字符串。但这些都不是错误,它们只是设计决策的结果。
关于最后一个要点,另请参阅 Joel Spolsky撰写的这篇优秀文章,他讨论了各种字符串格式及其特征,包括普通 C 字符串(带有终止符)、Pascal 字符串(带有长度)以及两者的组合,以空字符结尾帕斯卡弦。
尽管他有一个更多,容我们说,最后一种类型的“多彩”术语,每当我想到 Python 的优秀(并且完全不相关)的 f-strings 时,就会经常想到这个术语:-)
(A)AC串被定义为一系列的非终止子字符(比其他任何字符\\0
后跟一个终止子)。 因此,该定义不允许没有这样的终止子序列内两个嵌入式终止子,和序列。 或者,更简洁地说(根据 ISO C 标准):
字符串是由第一个空字符终止并包括第一个空字符的连续字符序列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.