1) Returns the length of the given null-terminated byte string, that is, the number of characters in a character array whose first element is pointed to by str up to and not including the first null character.
The behavior is undefined if str is not a pointer to a null-terminated byte string.
2) Same as (1), except that the function returns zero if str is a null pointer and returns strsz if the null character was not found in the first strsz bytes of str.
The behavior is undefined if
stris not a pointer to a null-terminated byte string and
strszis greater than the size of that character array.
strnlen_s
is only guaranteed to be available if __STDC_LIB_EXT1__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT1__ to the integer constant 1 before including <string.h>.
1) The length of the null-terminated byte string str.
2) The length of the null-terminated byte string str on success, zero if str is a null pointer, strsz if the null character was not found.
[edit] Notesstrnlen_s
and wcsnlen_s
are the only bounds-checked functions that do not invoke the runtime constraints handler. They are pure utility functions used to provide limited support for non-null terminated strings.
#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 }
Possible output:
without null character: 45 with null character: 46 without null character: 45[edit] References
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4