strnlen()
函数返回字符串的长度。它需要两个参数:字符串的地址(它是一维char
数组的数组名称)和数组的大小。
该函数返回字符串的长度,以size_t
类型的整数值返回。
如果第一个参数为NULL
,则返回0
。
如果数组在第二个参数指定的元素数中不包含\0
字符,则将返回第二个参数值作为字符串的长度。
示例代码
#define __STDC_WANT_LIB_EXT1__ 1 // 提供可选的函数版本
#include <string.h> // 字符串函数的并头文件
#include <stdio.h>
int main(void)
{
char str[][70] = {
"test.",
"asdf.",
"test test.",
};
unsigned int count = 0; // 字符串的长度
unsigned int strCount = sizeof(str) / sizeof(str[0]); // Number of strings
printf("共有:%u 个字符串.\n", strCount);
// 查找字符串的长度
for (unsigned int i = 0; i < strCount; ++i)
{
printf("字符串:\n "%s"\n 包含 %zu 字符.\n",
str[i], strnlen(str[i], sizeof(str[i])));
}
return 0;
}
执行上面示例代码,得到以下结果:
hema@yiibai:~/book$ gcc main.c
hema@yiibai:~/book$ ./a.out
共有:3 个字符串.
字符串:
"test."
包含 5 字符.
字符串:
"asdf."
包含 5 字符.
字符串:
"test test."
包含 10 字符.
for
循环遍历二维str
数组的第一维,因此它选择每个字符串。printf()
的第三个参数调用strnlen()
函数来获取str[i]
中字符串的长度。将sizeof
运算符应用于str [i]
为strnlen()
提供第二个参数值。