strlen, strnlen_s
來自 cppreference.com
定義於標頭檔案 <string.h> |
||
size_t strlen( const char* str ); |
(1) | |
(2) | (C11 起) | |
1) 返回給定以空字元結尾的位元組字串的長度,即一個字元陣列中的字元數量,該字元陣列的第一個元素由 str 指向,直到但不包括第一個空字元。
如果 str 不是指向以空字元結尾的位元組字串的指標,則行為未定義。
2) 與 (1) 相同,但如果 str 是空指標,則函式返回零;如果在 str 的前 strsz 個位元組中未找到空字元,則返回 strsz。
如果 str 不是指向以空字元結尾的位元組字串的指標,並且 strsz 大於該字元陣列的大小,則行為未定義。
- 與所有邊界檢查函式一樣,只有當實現定義了 __STDC_LIB_EXT1__ 且使用者在包含 <string.h> 之前將 __STDC_WANT_LIB_EXT1__ 定義為整數常量 1 時,才能保證
strnlen_s
可用。
目錄 |
[編輯] 引數
str | - | 指向要檢查的以空字元結尾的位元組字串的指標 |
strsz | - | 要檢查的最大字元數 |
[編輯] 返回值
1) 以空字元結尾的位元組字串 str 的長度。
2) 成功時,以空字元結尾的位元組字串 str 的長度;如果 str 是空指標,則為零;如果未找到空字元,則為 strsz。
[編輯] 注意
strnlen_s
和 wcsnlen_s
是唯一不呼叫執行時約束處理程式的邊界檢查函式。它們是純實用函式,用於為非空終止字串提供有限支援。
[編輯] 示例
執行此程式碼
#define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> #include <string.h> int main(void) { const char str[] = "How many characters does this string contain?"; printf("without null character: %zu\n", strlen(str)); printf("with null character: %zu\n", sizeof str); #ifdef __STDC_LIB_EXT1__ printf("without null character: %zu\n", strnlen_s(str, sizeof str)); #endif }
可能的輸出
without null character: 45 with null character: 46 without null character: 45
[編輯] 參考
- C23 標準 (ISO/IEC 9899:2024)
- 7.24.6.3 strlen 函式 (p: 待定)
- K.3.7.4.4 strnlen_s 函式 (p: 待定)
- C17 標準 (ISO/IEC 9899:2018)
- 7.24.6.3 strlen 函式 (p: 待定)
- K.3.7.4.4 strnlen_s 函式 (p: 待定)
- C11 標準 (ISO/IEC 9899:2011)
- 7.24.6.3 strlen 函式 (p: 372)
- K.3.7.4.4 strnlen_s 函式 (p: 623)
- C99 標準 (ISO/IEC 9899:1999)
- 7.21.6.3 strlen 函式 (p: 334)
- C89/C90 標準 (ISO/IEC 9899:1990)
- 4.11.6.3 strlen 函式
[編輯] 另請參閱
(C95)(C11) |
返回寬字串的長度 (函式) |
返回下一個多位元組字元的位元組數 (函式) | |
C++ 文件 適用於 strlen
|