• C语言::模拟实现strlen函数


    题目要求

    编写一个C语言程序模拟实现strlen函数.

    算法

    strlen函数功能是计算字符串中字符的个数.(除外)

    而字符串本身就是一个字符数组,只不过末尾以结束.

    因此,我们只需遍历除之外的所有字符即可.

    有三种方法可以解决这个问题.

    算法总结

    方法一:设置一个整型计数器,遍历字符串.

    方法二:通过不断函数自身的递归.

    方法三:与方法一类似,设置一个char*变量标记字符串尾部,通过指针相减得到字符长度.

    核心代码

    //方法一:通过设置整型计数器,模拟实现strlen函数.
    int my_strlen1(const char *str){
    	assert(str);
    	int count = 0;
    	while(*str++){
    		count++;
    	}
    	return count;
    }
    //方法二:通过递归,模拟实现strlen函数
    int my_strlen2(const char *str){
    	assert(str);
    	if(*str){
    		return (1+my_strlen2(str+1));
    	}
    		return 0;
    }
    //方法三:通过char*变量,模拟实现strlen函数
    int my_strlen3(const char *str){
    	const char *end = str;
    	assert(str);
    	while(*end++){
    		;
    	}
    	return (end-str-1);
    }
    

    完整测试代码

    /*
    *本代码版权归高小调博客所有 
    *作者:行不更名,坐不改姓的博主高小调
    *日期:2015-7-31
    *代码功能:三种方式模拟实现strlen函数 
    *搜集整理:高小调博客-(http://gaoxiaodiao.com) 
    */
    #include
    #include
    //方法一:通过设置整型计数器,模拟实现strlen函数.
    int my_strlen1(const char *str){
    	assert(str);
    	int count = 0;
    	while(*str++){
    		count++;
    	}
    	return count;
    }
    //方法二:通过递归,模拟实现strlen函数
    int my_strlen2(const char *str){
    	assert(str);
    	if(*str){
    		return (1+my_strlen2(str+1));
    	}
    		return 0;
    }
    //方法三:通过char*变量,模拟实现strlen函数
    //(库函数中的strlen函数就是这么干的)
    int my_strlen3(const char *str){
    	const char *end = str;
    	assert(str);
    	while(*end++){
    		;
    	}
    	return (end-str-1);
    }
    int main(){
    	char str[]="abcdef";
    	printf("str长度是:%d
    ",my_strlen1(str));
    	printf("str长度是:%d
    ",my_strlen2(str));
    	printf("str长度是:%d
    ",my_strlen3(str));
    	return 0;
    }
    

    输出

    strlen函数输出结果

      本代码用到的函数列表
    1. printf()函数功能、原型、用法和实例
    2. assert()宏功能、原型、用法和实例
    3. strlen()函数功能、原型、用法及实例
  • 相关阅读:
    . net core的发布
    Using Redis Cache for session data storage in ASP.NET Core
    WCF之双工服务
    值得参考的.net core 的博客
    一、获取EF
    limit 基本实现方式
    Session机制详解及分布式中Session共享解决方案
    ASP.NET Core 中的基于角色的授权ASP.NET Core 中的基于角色的授权
    WCF之双工服务
    苹果公司的粉丝转抄
  • 原文地址:https://www.cnblogs.com/qq329914874/p/6142456.html
Copyright © 2020-2023  润新知