C语言的strlen函数怎么使用

  介绍

今天小编给大家分享一下C语言的strlen函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获、下面我们一起来了解一下吧。

C语言中的字符串函数有如下这些

<李>

获取字符串长度

<李>

strlen

<李>

长度不受限制的字符串函数

<李>

拷贝字符串

<李>

strcat

<李>

比较字符串

<李>

长度受限制的字符串函数

<李>

strncpy

<李>

strncat

<李>

strncmp

<李>

字符串查找

<李>

strstr

<李>

strtok

<李>

错误信息报告

<李>

strerror

接下来看看如何实现它们

获取字符串长度

strlen

我们看看文档是怎样说的,如下

strlen文档

 size_t  strlen  (, const  char  *, str ); 

获取字符串长度

获取字符串长度

返回的长度C string  str

返回C字符串str的长度

C字符串的长度是由终止null字符:A  C字符串,是只要数量的字符在字符串的开始和终止null字符(不包括终止null字符本身)。

C字符串长度是由& # 39;\ 0 & # 39;来确定的,也就是说从字符串的第一个开始只要遇到& # 39;\ 0 & # 39;就结束长度计算(不包含& # 39;\ 0 & # 39;)

本不应被混淆的字符串数组的大小。例如:

不用困惑你创建的数组的大小,比如这样

 char  mystr [100]=皌est  string"; 

定义字符数组大小为100,<代码>字符,但C字符串which  mystr ,已初始化的长度> <李>

字符串已经& # 39;\ 0 & # 39;作为结束标志,strlen函数返回的是在字符串中& # 39;\ 0 & # 39;前面出现的字符个数(不包含& # 39;\ 0 & # 39;)。

<李>

该函数只认& # 39;\ 0 & # 39;参数指向的字符串必须要以& # 39;\ 0 & # 39;李结束。

<李>

注意函数的返回值为size_t,是无符号的

实现

strlen函数的实现有好几种。

比如

<李>

计数器的方法

<李>

递归

<李>

指针——指针

接下来一一实现。

<编辑> 1。计数器:使用一个变量来记录——数

断言指针不为空是个好习惯~

 int  my_strlen (char *, str),
  {
  int  count =, 0;
  断言(str  !=, NULL);
  while  (* str  !=, & # 39; \ 0 & # 39;),//, while  (* str)
  {
  数+ +;
  str + +;
  }
  return 计算;
  }

就一直找& # 39;\ 0 & # 39;当* str不是& # 39;\ 0 & # 39;时,就数+ +,str + +,直到遇到& # 39;\ 0 & # 39;停止,然后返回数就是长度了。

<编辑> 2。递归

断言指针不为空是个好习惯~

 int  my_strlen (char *, str)
  {
  ,,,断言(str  !=, NULL);
  ,,,char *, p =, str;
  ,,,,(==* p  & # 39; \ 0 & # 39;)
  ,,,{
  ,,,,,,,return  0;
  ,,,}
  ,,,return  1, +, my_strlen (p  +, 1);
  }

比如传入的str地址为1000

那么1 + my_strlen (p + 1)中,p + 1,指针偏移后就是1001年以此类推。

1 + 1 + my_strlen (p + 1)

1 + 1 + 1 + my_strlen (p + 1)

1 + 1 + 1 + 1 + my_strlen (p + 1)

1 + 1 + 1 + 1 +…+ 0

最终就可以得出长度。

<编辑> 3。指针——指针

断言指针不为空是个好习惯~

 int  my_strlen (char *, str),
  {
  ,,,断言(str  !=, NULL);
  char *, p =, str;
  while  (* p  !=, & # 39; \ 0 & # 39;),
  {
  p + +;
  }
  return  p 安康,str;
  }

把指针str的地址赋值给一个新的指针p, str作为指向起始地址的指针,不改变它,记录起始地址。

然后通过指针p进行查找& # 39;\ 0 & # 39;判断当前字符是否为& # 39;\ 0 & # 39;不是就进行p + +,然后继续判断下一个字符,如此循环,直到指针p找到& # 39;\ 0 & # 39;,然后用,<强>当前的指针p ,减去,<强>起始指针str 强,进行返回,就是长度了。

C语言的strlen函数怎么使用