首页 > 其他分享 >C练习——计算字符串长度,实现strlen功能

C练习——计算字符串长度,实现strlen功能

时间:2023-12-23 13:00:28浏览次数:38  
标签:count arr int my 练习 char 字符串 strlen

strlen是一个库函数,是专门求字符串长度的,只能针对字符串,从参数给定地址向后一直找“\0”,

统计“\0”之前出现的字符的个数。

现给字符串“abcd”,要求写一个计算此字符串长度的函数

 

#include <stdio.h>
int my_strlen(char arr[]); // 函数声明
int main()
{
    char arr[] = "abcd";
    int len = my_strlen(arr);
    printf("%d\n", len);
    return 0;
}
// first: 遍历数组,count计数,if判停止
int my_strlen(char arr[])
{
    int i = 0;
    int count = 0;
    while (1)
    {
        if (arr[i] != '\0')
        {
            count++;
            i++;
        }
        else
            break;

    }
    return count;
}

如果你对数组名和指针有足够理解,那么此代码还可优化

#include <stdio.h>
int my_strlen(char arr[]); // 函数声明
int main()
{
    char arr[] = "abcd";
    int len = my_strlen(arr);
    printf("%d\n", len);
    return 0;
}
// second: 遍历数组,count计数,if判停止
int my_strlen(char arr[]) //数组名就是数组首元素地址
{
    int count = 0;
    while (*arr != '\0')
    {
        count++;
        arr++;
    }
    return count;
}

 

 

 如果你对递归算法有一定理解,那么事情就更简单了

#include <stdio.h>
int my_strlen(char arr[]); // 函数声明
int main()
{
    char arr[] = "abcd";
    int len = my_strlen(arr);
    printf("%d\n", len);
    return 0;
}
// third: 递归
int my_strlen(char arr[]) //数组名就是数组首元素地址相当于 char*str
{
    if (*arr != '\0')
        return 1 + my_strlen(arr + 1);
    else
        return 0;
}

 

 递归过程大致如下:

 

 

 

 

标签:count,arr,int,my,练习,char,字符串,strlen
From: https://www.cnblogs.com/xiaowanglong/p/17922987.html

相关文章

  • Java中使用JTS实现WKB数据写入、转换字符串、读取
    场景Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132755202WKB介绍WKB(Well-KnownBinary)用二进制流描述几何对象信息。WK......
  • 确定字符串是否包含为以字符串
    用一个算法来识别一个字符串是否是唯一的,如果是就yes如果不是就no废话不多说,直接上代码#include<iostream>usingnamespacestd;constintN=24;inta[N];//a数组用来统计每个字符出现的次数intmain(){strings;//规定了一个字符串cin>>s;intf=0;intlen=s.......
  • 每日一练 | 华为认证真题练习Day153
    1、2.4Ghz频段中的14个可用频段不存在信道重叠。A.TrueB.False2、为加入无线网络STA需要先获取无线网络信息,STA采用以下哪种报文主动获得SSID信息?A.DiscoveryB.ProbeC.JoinD.Beacon3、为检测CAPWAP隧道的连通状态,在CAPWAP隧道建立之后AC使用以下哪些CAPWAP报文进行探测?(多选)A.......
  • 字符串优化
    在C#中,string是引用类型,每次动态创建一个string,c#都会在堆内存中分配一个内存用于存放字符串(包括字符串拼接、字符串分割等)。解决方法有两种:1.自建缓存机制,可以用一些标志性的Key值来一一对应字符串,比如游戏项目中常用ID来构造某个字符串,伪代码如下:ResDatadata=GetDataById......
  • C练习——二分法查找有序数组
    //使用二分法折半查找,每次查找少一半数据,效率高#include<stdio.h>intsubscript(chararr[],intx,inty){intleft=0;intright=x-1;while(left<=right){intmid=left+(right-left)/2;if(arr[mid]<y)......
  • 字符串
    字符串字符串匹配问题在字符串s中查找某个字符串p是否出现朴素做法枚举s中每个长度为m的子串,然后判断这些子串和p一不一样怎么判断一不一样?一位一位比较,这时总的复杂度为\(O(nm)\)字符串哈希优化,使用哈希可以做到\(O(n+m)\)的时间复杂度KMP用线性复杂度解决字符串匹配问......
  • java中字符串的比较以及string 方法图解
    最近在项目中经常要用到字符串的比较,因此做了一个简略的总结,希望对大家有所帮助!!!!!!!!!!!!!!!1总体来说java中字符串的比较是比较引用,equals比较值的做法。(equals对于其他引用类型比较的是地址,这是因为object的equals方法比较的是引用),但是不同的声明方法字符串的比较结果也是不同的。例如:S......
  • 字符串转浮点型应用
    一、   工业应用中的问题1、     国内自定义协议众多,数值在计算机中存储方式五花八门。2、     计算机实际存储方式理解不容易或者忘记。3、     硬件技术发展,让使用存储内存不再是难解决问题,浪费存储内存和传输带宽。二、   计算机中浮点型简介1......
  • day 03-2 Python基础-字符串格式化
    2.字符串格式化字符串格式化,使用跟便捷的形式实现字符串的拼接。%format(推荐)f2.1%2.1.1基本格式化操作#%s是占位符,也成为字符串占位符#后面空格加%text="我叫%s,今年18岁"%"linzai"#:%前面加上一个空格print(text)name="linzai"text="我叫%s,今年18岁"......
  • 带逗号的字符串组装成List集合
    privateList<FileUrlDto>buildFileUrlMethod(StringfileUrl,StringfileName){List<String>files=newArrayList<>();List<String>fileNames=newArrayList<>();List<FileUrlDto>fileUrlDtoList=newArrayList&l......