0
点赞
收藏
分享

微信扫一扫

c语言里如何用自己的方法写出strlen函数

夕颜合欢落 2022-04-19 阅读 82
c#

本文里主要会通过3种方法解决该问题

  1. while循环,计数器方法
  2. 递归实现字符统计
  3. 指针的方法

三种方法由易到难,读者可以自行选择阅读

1.while循环

#include <stdio.h>
#include <string.h>
int my_strlen_my(char* str) {
    int count = 0;
    while (*str != '\0') {
        str++;//每次对str指针进行+1操作,直到遇到字符串结束标志,这里涉及到指针的运算
        count++;
        return count;
    }
}
int main()
{
    char arr1[] = { "abcdefg" };
    int count = my_strlen_my(arr1);
    printf("长度=%d", count);
    return 0;
}

这里的思路是arr1里有几个元素,,则计数器count就++几次,最终得到目的,这是最简单的办法

2.递归

递归的一种粗暴的理解就是我已经可以实现该用处,在递归的时候我们可以认为我们的函数my_strlen_my已经可以实现我们的功能,则我们可以将计算整个字符长度简化为第一个字符的长度(1)+剩下字符的长度(my_strlen_my(str+1)),这里的str是数组名,众所周知数组名是第一个数组的地址,

#include <stdio.h>
#include <string.h>
int my_strlen_my(char* str) {
    if (*str != '\0')
        return 1 + my_strlen_my(str + 1);
/*这里就是默认该函数已经可以完成求长度的任务,说以总长度就是第一个+剩下的长度(我们用函数表示)


*/
    else
        return 0;
}
int main()
{
    char arr1[] = { "abcdefg" };
    int count = my_strlen_my(arr1);
    printf("长度=%d", count);
    return 0;
}

3.指针的方法

我们了解一个知识点,在指针的初级运算里有一种指针减指针的操作,这种操作的本质是先计算两个指针之间的字节数,在除以指针变量所占的字节数,总言之,我们可以利用这个来计算两个指针之间的个数

要计算个数就要知道这两个指针的位置,第一个指针可以是数组名(我们反复强调数组名是第一个元素的地址),接下来代码的重点是如何获取最后的指针,我们的思路是字符串结束标志是“\0”


#include <stdio.h>
#include <string.h>
int my_strlen_my(char* str) {
    char* strat = str;
    char* end = str;
    while (*end != '\0')
        end++;//寻找最后的指针让他指向\0;
    return end - strat;

}
int main()
{
    char arr1[] = { "abcdefg" };
    int count = my_strlen_my(arr1);
    printf("长度=%d", count);
    return 0;
}

以上就是实现strlen的三种方法了,,在标准的库里使用的就是第三种方法

举报

相关推荐

0 条评论