扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
目录
创新互联提供做网站、成都网站制作、网页设计,成都品牌网站建设,一元广告等致力于企业网站建设与公司网站制作,10余年的网站开发和建站经验,助力企业信息化建设,成功案例突破成百上千家,是您实现网站建设的好选择.引言:
一、库函数模拟实现
1.1模拟实现Strlen-求字符串的长度
1.2strcpy-复制字符串
1.3strcat-追加字符串
1.4strstr-查找是否存在
武侠小数中,想要成为练就绝世武功,必先要练就内功,只有内功厉害,在练其他招式时,就能发挥他大的功力。
c语言的内功,必然就是C语言库函数的模拟实现
一、库函数模拟实现 1.1模拟实现Strlen-求字符串的长度三种方法:
方式一:计数器方法:
//计数器方式
size_t my_strlen(const char * str)
{
int count = 0;
while(*str) //‘\0’的ascii值为0
{
count++;
str++;
}
return count;
}
strlen函数返回的是‘\0’前面的字符个数。
1.参数指向的字符必须要以“\0”,结尾。
2.size_t,返回的值无符号的.
方式二:递归法
//使用递归函数
int my_strlen(const char * str)
{
if(*str == '\0')
return 0;
else
return 1+my_strlen(str+1);
}
递归法在使用的口诀就是“大事化小法”。
方式三:函数指针
int my_strlen(char *s)
{
char *p = s;
while(*p != ‘\0’ )
p++;
return p-s;
}
指针-指针得到的是该字符串的个数。
1.2strcpy-复制字符串strcpy的几个特点:1.源字符串必须以“\0”结束
2.会将“\0”拷贝到目标地址
3.目标空间必须足够大,以确保能放下原字符串
char * my_strcpy(char * dest,char* src){
char * ret=dest; //先把目标的指针保存起来,返回的时候才能找到原始的指针
assert(dest && src);
while(*dest++ = *src++){ //后置++ ,先使用后++
;
}
}
1.3strcat-追加字符串strcat的几个特点:1.源字符串必须以“\0”结束
2.会将“\0”追加到目标地址中
3.目标空间必须足够大,以确保能放下原字符串
char * my_strcat(char *dest,char *src){
assert(det && src);
char * ret=dest;
while(*dest){
dest++;
}
while(*dest ++ =*src++){
;
}
return ret;
}
1.4strstr-查找是否存在查找str2字符串是不是str1字符串的一部分;
char * my_strstr ( const char *str1, const char * str2){
assert(str1 && str2);
char *ret= str1;
char *s1,s2;
while(*ret){
s1=ret;
s2=str2;
while(s1 & s2 & (*s1 == *s2)){
s1++;
s2++;
}
ret++;
}
return ret;
}
1.5strcmp!!int my_strcmp (const char * src, const char * dst)
{
int ret = 0 ;
assert(src != NULL);
assert(dest != NULL);
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret< 0 )
ret = -1 ;
else if ( ret >0 )
ret = 1 ;
return( ret );
}
感谢你看到这里哦!!!
你的点赞是我前进的动力!!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流