13
strlen()
如何在內部工作?strlen:它是如何工作的?
strlen()
如何在內部工作?strlen:它是如何工作的?
strlen
通常通過計數字符串中的字符直到找到\0
字符。規範實施將是:
size_t strlen (char *str) {
size_t len = 0;
while (*str != '\0') {
str++;
len++;
}
return len;
}
該函數沒有固有的錯誤,它的工作原理與文檔完全一樣。
這並不是說沒有問題,即:
\0
,你可能會碰到的問題,但在技術上,那不是C字符串(a),這是你自己的錯。\0
個字符,但是,在這種情況下,它又不會是C字符串。但這些都不是bug,它們只是設計決定的結果。
另請參見Joel Spolsky編寫的this excellent article,他討論了各種字符串格式及其特性,包括普通的C字符串,Pascal字符串以及兩個空終止的Pascal字符串的組合,儘管他擁有更多,我們應該說「多彩的」一詞爲他們:-)
的(a) AC串被定義爲後跟終止一系列非終止子的字符(即,除了\0
任何其他)。因此,該定義不允許序列內的嵌入終止子和沒有這種終止子的序列。
或者,把它更簡潔地(根據ISO標準):
字符串是由封端的字符的連續序列,並且包括第一個空字符 。