c语言编程实现strlen,C语言::模拟实现strlen函数(示例代码)-程序员宅基地

技术标签: c语言编程实现strlen  

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

算法

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

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

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

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

算法总结

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

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

方法三:与方法一类似,设置一个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\n",my_strlen1(str));

printf("str长度是:%d\n",my_strlen2(str));

printf("str长度是:%d\n",my_strlen3(str));

return 0;

}

小调祝你一切安好.

本文由高小调博客原创!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35343788/article/details/117072378

智能推荐

iOS学习:iOS代码规范_ios replaceobjectsinrange-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏5次。作者感言阅读前言iOS代码规范Import规范Define规范Paragma Mark 规范Interface规范implementation规范实例规范NSDictionary规范NSArray规范函数规范If-Else规范For-In For 规范Block规范运算符规范命名规范实例命名规范Property命名规范Interface-class命名规范B_ios replaceobjectsinrange

python 将列表中的字符串转为数字格式,以及pandas Series或index转换为Numpy数组_pandas index存入数组-程序员宅基地

文章浏览阅读1.7w次,点赞7次,收藏39次。本文实例讲述了Python中列表元素转为数字的方法分享给大家供大家参考,具体如下:1.首先可以用循环来解决(直接粗暴)举个栗子:<1>有一个数字字符的列表:numbers = ['2', '5', '130', '8']`<2>想要把每个元素转换为数字:numbers = [2, 5, 130, 8]用一个循环来解决:new_numbers = [];..._pandas index存入数组

PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)_mysql 数据库查出的字符串导出excel转码-程序员宅基地

文章浏览阅读7.5k次。有时候直接用php导出excel会有乱码或者中文变成问号出现,这时候肯定就是编码的问题了。 前 后 前 后 环境MySQL 5.0 数据库 utf8_general_ci 编码PHP UTF8 编码需要注意的问题1. 从数据库读取出来的数据是否乱码? mysql_query( "SET NAMES 'u_mysql 数据库查出的字符串导出excel转码

【python】数据挖掘机器学习模型——分类预测方法汇总_决策树分类预测代码-程序员宅基地

文章浏览阅读1.6k次,点赞9次,收藏30次。数据挖掘常用的一些模型进行简单的汇总,可能不全,但是都是一些比较经典的预测模型。本文使用的是鸢尾花数据集进行展示模型。_决策树分类预测代码

wpsjs插件开发-采用js和wps交互功能_wps插件开发-程序员宅基地

文章浏览阅读9.1k次。WPS 加载项是一套基于 Web 技术用来扩展 WPS 应用程序的解决方案。每个 WPS 加载项都对应打开了一个网页,并通过调用网页中 JavaScript 方法来完成其功能逻辑。_wps插件开发

制作PPT的7条黄金法则-程序员宅基地

文章浏览阅读514次。导读:制作具有视觉吸引力的演示文稿的速成指南。作者:玛丽昂·沙罗(Marion Charreau)、珍妮弗·约翰逊(Jenifer L. Johnson)来源:大数据DT(ID:hzdas..._ppt黄金法则

随便推点

把平板、手机作为电脑第二屏幕(Linux系统下)_平板副屏linux-程序员宅基地

文章浏览阅读1.5w次,点赞18次,收藏69次。将平板、手机作为电脑第二屏幕(Linux系统下)背景把手机、平板作为电脑第二屏幕是上个学期偶然想到的,那时我一边看网上的教程一边码代码。由于看的是视频教程,缩小了就看不清上面的字,放大了又会挡住打字区域。这时就想如果有个第二屏幕就很方便了,买个屏幕又不太方便,想到自己还有个平板天天吃灰,这不是就是现成的屏幕嘛。在网上搜了搜发现真的有解决方案,windows和mac上有很多软件可以用,但我平时..._平板副屏linux

JPA 批注参考(3)-程序员宅基地

文章浏览阅读109次。来源:www.oracle.com■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■本文的主要内容如下:详细解释了下面10个批注的含义及其批注所包含的属性: @Entity@EntityListeners@EntityResult@Enumerated@ExcludeDefaultListeners@ExcludeSuperclassListeners@FieldRe..._entityresult

小白也能搞定!Windows10上CUDA9.0+CUDNN7.0.5的完美安装教程-程序员宅基地

文章浏览阅读1.3k次。为什么要在本地电脑安装 CUDA,CUDA 是什么的,用来做什么?我想,点击标题进来的小伙伴,应该都清楚这些。不管你是用来做什么,或者跟我一样为了跑 Tensorflow 的 Object Detection (目标检测)。但是我为什么要用 CUDA9,这里版本要特别注意。因为我使用的是 Tensorflow-gpu 1.10.0,为了能运行成功,最好和我的保持一致,那就开始我的踩坑流程吧。_cuda9.0

Ubuntu 16.04安装后的简单配置和常用软件安装-程序员宅基地

文章浏览阅读121次。0.调整时区为什么放到0来说呢,因为这实在是太重要了。估计没有几个人电脑上只有一个ubuntu系统。每次用ubuntu再切回win,win都会产生8小时时差,非常讨厌。至于原因就不再赘述。这里讲解决办法。在Ubuntu 16.04 版本以前,关闭UTC的方法是编辑/etc/default/rcS,将UTC=yes改成UTC=no,。但在Ubuntu 16.04使用systemd启动之后,时间改..._sogoupinyin.list为空

Pillow的使用-Image篇_pillow image-程序员宅基地

文章浏览阅读1.5w次,点赞9次,收藏54次。安装Pillowpip install pillow构建图像Image.open(fp, mode =’r’ ):打开图片文件,返回一个Image对象 fp:图片路径mode:模式。如果给出,必须是rfrom PIL import Imageim = Image.open(path)Image.alpha_composite(im1, im2):在im1对象..._pillow image

jquery 基础掌握_jquery掌握-程序员宅基地

文章浏览阅读146次。一、什么是jquery? 1.jquery是javaScript的一个框架产品。 2.简化js编码,提高开发效率。 3.屏蔽了js的浏览器差异。二、使用jquery开发 1.搭建jquery开发环境:将 jquery-1.8.3.js引入到项目; 在需要使用jquery开发的页面(jsp/html)引入jquery-1.8.3.js 在head引入:DOM对象 与 jque..._jquery掌握

推荐文章

热门文章

相关标签