pax*_*blo 51
strlen通常通过计算字符串中的字符直到\0找到字符为止.规范的实现将是:
size_t strlen (char *str) {
size_t len = 0;
while (*str != '\0') {
str++;
len++;
}
return len;
}
Run Code Online (Sandbox Code Playgroud)
函数中没有固有的错误,它完全按照文档记录的方式工作.
这并不是说它没有问题,即:
\0,你可能遇到问题,但从技术上讲,这不是一个C字符串(a),这是你自己的错.\0字符放在你的字符串中,但在这种情况下,它不会是一个C字符串.但这些都不是错误,它们只是设计决策的结果.
另请参阅Joel Spolsky 撰写的这篇优秀文章,其中讨论了各种字符串格式及其特性,包括普通的C字符串,Pascal字符串以及两种空终止Pascal字符串的组合,尽管他有更多,我们应该说,"多彩"他们的期限:-)
(a) AC字符串被定义为一系列非终结符字符(即,除了之外的任何字符\0)后跟该终结符.因此,该定义不允许序列内的嵌入终止子和没有这种终止子的序列.
或者,更简洁地说(根据ISO标准):
字符串是由第一个空字符终止并包括第一个空字符的连续字符序列.
| 归档时间: |
|
| 查看次数: |
48539 次 |
| 最近记录: |