C语言计算字符串的长度

C语言计算字符串长度一般是库函数计算。今天本人来自己实现字符串长度的计算。 😝

当形参以数组名传递时,由于数组名代表首元素地址,所以我们需要将字符串的个数传递给函数,但如果想自己输入字符串的话,那么可以把字符数组的长度规定的大一点。直接上代码

#include <stdio.h>
#define N 10

int main()
{
    char arr[N] = { 0 };
    scanf("%s", arr);

    //函数形参以数组名接受
    int ret1 = my_strlen1(arr,N);

    //函数形参以指针接受
    int ret2 = my_strlen2(arr);

    //用递归实现
    int ret3 = my_strlen3(arr);

    printf("my_str_len1:%d\n", ret1);
    printf("my_str_len2:%d\n", ret2);
    printf("my_str_len3:%d\n", ret3);
    return 0;
}
  1. 形参以数组名接收

int my_strlen1(char arr[],int num)//以数组形式传参
{
    int count = 0;
    int i = 0;
    for (i = 0; i < num; i++)
    {
        if (arr[i] != '\0')
        {
            count++;
        }
        else
        {
            //放在循环内是防止循环第一个之后的所有字符'\0'
            return count;
        }
    }
}
  1. 形参以指针接收

int my_strlen2(char* str)
{
    int count = 0;
    while (*str != '\0')
    {
        count++;
        str++;//++运算符可以用在指针上,而数组只能以下标访问
    }
    return count;
}
  1. 递归函数实现

int my_strlen3(char* str)
{
    if (*str == '\0')
        return 0;
    else
        return 1 + my_strlen3(str+1);
}
递归实现比起第一和第二种,不创建临时变量。也是利用指针自增自减的特性实现对字符串的遍历

就是图画的太丑了😭。

  1. 结果测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值