易百教程

字符串长度

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()提供第二个参数值。