码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-07-31 20:30:18      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

题目要求

编写一个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<stdio.h>
#include<assert.h>
//方法一:通过设置整型计数器,模拟实现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;
}
    本代码用到的函数列表
  1. printf()函数功能、原型、用法和实例
  2. assert()宏功能、原型、用法和实例
  3. strlen()函数功能、原型、用法及实例

PS:大部分男人并不知道自己喜欢什么样的女人,只要看到长得漂亮的妹子,就动心了.

每天的把那些嘘寒问暖、甜言蜜语什么的往妹子身上砸.

而一个对女人有明确标准的男人,见到长得漂亮的妹子,也会动心.

和其他男人不一样的是,只有当那个女生接近他的标准时,他才会每天嘘寒问暖...

(未完待续...)

小调祝你一切安好.

本文由高小调博客原创!

原文地址:http://gaoxiaodiao.com/p/19.html

如欲转载,请注明出处!

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

标签:

原文地址:http://www.cnblogs.com/gaoxiaodiao/p/5723752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!