技术标签: 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;
}
小调祝你一切安好.
本文由高小调博客原创!
文章浏览阅读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
文章浏览阅读1.7w次,点赞7次,收藏39次。本文实例讲述了Python中列表元素转为数字的方法分享给大家供大家参考,具体如下:1.首先可以用循环来解决(直接粗暴)举个栗子:<1>有一个数字字符的列表:numbers = ['2', '5', '130', '8']`<2>想要把每个元素转换为数字:numbers = [2, 5, 130, 8]用一个循环来解决:new_numbers = [];..._pandas index存入数组
文章浏览阅读7.5k次。有时候直接用php导出excel会有乱码或者中文变成问号出现,这时候肯定就是编码的问题了。 前 后 前 后 环境MySQL 5.0 数据库 utf8_general_ci 编码PHP UTF8 编码需要注意的问题1. 从数据库读取出来的数据是否乱码? mysql_query( "SET NAMES 'u_mysql 数据库查出的字符串导出excel转码
文章浏览阅读1.6k次,点赞9次,收藏30次。数据挖掘常用的一些模型进行简单的汇总,可能不全,但是都是一些比较经典的预测模型。本文使用的是鸢尾花数据集进行展示模型。_决策树分类预测代码
文章浏览阅读9.1k次。WPS 加载项是一套基于 Web 技术用来扩展 WPS 应用程序的解决方案。每个 WPS 加载项都对应打开了一个网页,并通过调用网页中 JavaScript 方法来完成其功能逻辑。_wps插件开发
文章浏览阅读514次。导读:制作具有视觉吸引力的演示文稿的速成指南。作者:玛丽昂·沙罗(Marion Charreau)、珍妮弗·约翰逊(Jenifer L. Johnson)来源:大数据DT(ID:hzdas..._ppt黄金法则
文章浏览阅读1.5w次,点赞18次,收藏69次。将平板、手机作为电脑第二屏幕(Linux系统下)背景把手机、平板作为电脑第二屏幕是上个学期偶然想到的,那时我一边看网上的教程一边码代码。由于看的是视频教程,缩小了就看不清上面的字,放大了又会挡住打字区域。这时就想如果有个第二屏幕就很方便了,买个屏幕又不太方便,想到自己还有个平板天天吃灰,这不是就是现成的屏幕嘛。在网上搜了搜发现真的有解决方案,windows和mac上有很多软件可以用,但我平时..._平板副屏linux
文章浏览阅读109次。来源:www.oracle.com■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■本文的主要内容如下:详细解释了下面10个批注的含义及其批注所包含的属性: @Entity@EntityListeners@EntityResult@Enumerated@ExcludeDefaultListeners@ExcludeSuperclassListeners@FieldRe..._entityresult
文章浏览阅读1.3k次。为什么要在本地电脑安装 CUDA,CUDA 是什么的,用来做什么?我想,点击标题进来的小伙伴,应该都清楚这些。不管你是用来做什么,或者跟我一样为了跑 Tensorflow 的 Object Detection (目标检测)。但是我为什么要用 CUDA9,这里版本要特别注意。因为我使用的是 Tensorflow-gpu 1.10.0,为了能运行成功,最好和我的保持一致,那就开始我的踩坑流程吧。_cuda9.0
文章浏览阅读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为空
文章浏览阅读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
文章浏览阅读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掌握