网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

c语言修炼内功,助你升级打怪!!-创新互联

 

目录

创新互联提供做网站、成都网站制作、网页设计,成都品牌网站建设一元广告等致力于企业网站建设与公司网站制作,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元起,快前往官网查看详情吧


分享文章:c语言修炼内功,助你升级打怪!!-创新互联
标题来源:http://bjjierui.cn/article/djddoi.html

其他资讯