当前位置: 首页 > news >正文

建设机械网站精英it培训班出来现状

建设机械网站精英,it培训班出来现状,淅川微网站建设,邢台信息港房屋出租目录 一.常用字符串函数介绍 1.strlen 2. strcpy 3.strcmp 4.strcat 5.strstr 二.模拟实现常用字符串函数 1.strlen 2.strcpy 3.strcmp 4.strcat 5.strstr 一.常用字符串函数介绍 1.strlen 字符串strlen是用来求字符串长度的,我们可以打开cpp网站查看有关…

目录

一.常用字符串函数介绍

1.strlen

2. strcpy

3.strcmp

4.strcat

5.strstr

二.模拟实现常用字符串函数

         1.strlen

2.strcpy

3.strcmp

4.strcat

5.strstr


一.常用字符串函数介绍

1.strlen

        字符串strlen是用来求字符串长度的,我们可以打开cpp网站查看有关信息

        该函数用来求字符串长度,求的是‘\0’之前字符的个数,函数参数为字符指针,因为该函数不需要修改字符串的值,故为了保护字符串被意外修改,设置为只读,所以在参数字符指针用const修饰,返回值即为字符串的长度,

        下面以经典helloworld字符串为例:

 输出结果:

字符串arr1为“helloworld”,一个10个字符,该字符串长度则为10,输出结果正确

2. strcpy

        字符串函数strcpy是用来拷贝字符串的,即将一个字符串的内容拷贝到另一个字符串中,而且会将该字符的'\0'也拷贝到另一个字符串中,我们打开cpp网站查看该函数的有关信息

         该函数的参数为两个字符指针,一个指向目标字符串,一个指向源字符串,由于只需要修改目标字符串,故用const修饰源字符串以防止误修改,函数返回值是目标字符串的首地址

下面以经典helloworld字符串为例:

  输出结果:

         可以看到我们将arr2中的helloworld成功地拷贝到了arr1中,但特别值得注意的是,当目标字符串空间不够时,强行拷贝比空间更大的字符串,虽然也可以输出结果,但毕竟是越界访问,会引发一些不可估计的问题,如将本例的arr1大小由10改为5:

 

 

可以看到程序运行后,虽然正常地打印出了结果,但是程序出错了

3.strcmp

        字符串函数strcmp函数是用来比较两个字符串大小的,但是并不是比较两个字符串的大小,而是比较字符串的内容,如果第一个字符串小于第二个字符串,则返回一个小于0的值,大于则返回一个大于0的值,等于则返回0,如“hello”和“hellz”,前面的字符都相等,‘o’小于‘z’,故"hello"小于“hellz”,如“hellx”和"hella",前面的字符都相等,'x'大于'a',所以“hellx”大于“hella”

        打开cpp网站查看该函数的相关信息

        该函数的参数为两个字符指针,由于比较不需要修改字符串,所以两个参数都用const修饰以防误修改 返回值为int型,比较的结果为小于则为小于0的值,大于则为大于0的值,等于则为0

下面以经典的helloworld字符串为例

输出结果:

 arr1小于arr2,故输出的结果为-1,arr3大于arr4,故输出的结果为1,arr5等于arr6,故输出的结果为0

4.strcat

        字符串函数strcat是用来连接两个字符串的,即将源字符串连接到目标字符串后面,连接的步骤是先找到目标字符串的末尾‘\0’,然后再进行拷贝,所以与strcpy的区别就在于要从目标字符串的末尾开始拷贝

        打开cpp网站查看该函数的相关信息:

         该函数的参数为两个字符指针,由于源字符串不需要修改,故加上const修饰以防误修改,返回值为连接后的字符串的地址,即目标字符串的地址

        下面以经典的helloworld字符串为例:

 输出结果

        可以看到我们成功地将arr2的“world”连接到arr1的“hello”中,于是arr1便变成了“helloworld”,与拷贝函数类似,特别值得注意的是,目标字符串要有足够大的空间,否则强行连接的话会出现一些未知的错误

        我们将上例的arr1的大小改为8:

 输出结果:

         可以看到虽然正常输出了,但是程序报错了

5.strstr

        字符串函数strstr是查找函数,在字符串中查找子串并返回子串在字符串第一次出现的地址,如果找不到子串则返回NULL

        打开cpp网站查看该函数的相关信息

        该函数的参数为两个字符指针。由于查找并不需要修改两个字符串的内容,所以两个字符指针都用const修饰,返回值为子串在字符串中第一次出现的地址

下面以经典的helloworld字符串为例:

 输出结果:

        可以看到“llo”可以在“helloworld”中找到,并返回指向“llo”’的地址,将改地址用%s打印,则从llo开始打印 ,即为lloworld

二.模拟实现常用字符串函数

1.strlen

       my_strlen模拟实现库函数strlen。参数为const char *,返回值为int型,即为字符串的长度,利用遍历字符串的方法,直到‘\0’结束遍历

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int my_strlen(const char* str)
{int len = 0;//定义长度,初始化为0while (*str != '\0')//从头开始遍历字符串,直到'\0'结束{len++;str++;}return len;//返回字符串的长度
}
int main()
{char arr1[] = "helloworld";int ret = my_strlen(arr1);printf("%d", ret);return 0;
}

   

2.strcpy

        利用my_strcpy模拟实现库函数strcpy,依次赋值,直到源字符串遍历到'\0"结束赋值,并返回预留的目标字符串的地址

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
char* my_strcpy(char* str1, const char* str2)
{char* p = str1;   //定义一个p指针保存str1,以便函数结束时返回while (*str1 = *str2)//依次赋值,直到*str2为'\0'结束{str1++;str2++;}return p;//返回预留的指针P
}
int main()
{char arr1[20] = {0};char arr2[] = "helloworld";char *str = my_strcpy(arr1,arr2);printf("%s", str);return 0;
}

    

3.strcmp

        利用my_strcmp函数模拟实现库函数strcmp,依次遍历比较,如果遇到不相等的情况则直接return返回,如果两个字符串相等,则遍历到'\0'再返回0

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int my_strcmp(const char* str1, const char* str2)/*要是不相等,下面的return会结束循环,
要是相等,则遍历到'\0'才结束*/
{while (*str1 != '\0' || *str2 != '\0'){if (*str1 < *str2)   //小于则返回-1return -1;else if (*str1 > *str2)//大于则返回1return 1;else if (*str1 == *str2)//相等则继续比较后面的字符{str1++;str2++;}}return 0;//只有相等才会执行到这一步,即相等返回0
}
int main()
{char arr1[] = "helloworla";char arr2[] = "helloworld";int ret = my_strcmp(arr1,arr2);printf("%d", ret);return 0;
}

4.strcat

        利用my_strcat函数模拟实现库函数strcat,先找到目标字符串的末尾‘\0’,然后从'\0'处依次赋值,直达遍历到源字符串的末尾'\0'

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
char* my_strcat(char* str1, const char* str2)
{char* p = str1;//保存连接字符串的地址,以便函数结束时返回while (*str1 != '\0')//遍历找到str1的'\0'处{str1++;}while (*str1 = *str2)//从str1的'\0'处依次赋值,直到遍历到str2的'\0'结束{str1++;str2++;}return p;//返回连接后字符串的地址
}
int main()
{char arr1[20] = "hello";char arr2[] = "world";char *str = my_strcat(arr1,arr2);printf("%s", str);return 0;
}

5.strstr

        利用my_strstr函数模拟实现库函数strstr,设置两个指针分别指向两个字符串,再设置一个指针P指向当前开始比较的字符的位置,直到遍历到子串的'\0'位置则已找到子串并返回子串的位置,循环节后仍咩=没有找到子串则说明找不到子串,返回NULL

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
char* my_strstr(const char* str1, const char* str2)
{const char* s1 = str1;//定义s1指向第一个字符串const char* s2 = str2;//定义s2指向第二个字符串const char* p = str1;//定义p指向第一个字符串当前开始比较的字符while (*p){s1 = p;   //从p处开始比较s2 = str2;//从头开始比较while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)//判断遍历字符是否相等{s1++;s2++;}if (*s2 == '\0')//如果是因为*s2为'\0'结束,则证明找到子串,返回子串的位置return p;p++;//一轮比较后没有找到子串,则从下一个字符开始比较}return NULL;
}
int main()
{char arr1[] = "helloworld";char arr2[] = "llo";char *str = my_strstr(arr1,arr2);printf("%s", str);return 0;
}


文章转载自:
http://floridity.bnpn.cn
http://jocose.bnpn.cn
http://pyopericardium.bnpn.cn
http://droog.bnpn.cn
http://motorize.bnpn.cn
http://pigeonite.bnpn.cn
http://euphrosyne.bnpn.cn
http://chronicity.bnpn.cn
http://zymosis.bnpn.cn
http://heterogony.bnpn.cn
http://ductor.bnpn.cn
http://indisputability.bnpn.cn
http://assembled.bnpn.cn
http://afghani.bnpn.cn
http://revert.bnpn.cn
http://spiel.bnpn.cn
http://atheistic.bnpn.cn
http://invincibly.bnpn.cn
http://legree.bnpn.cn
http://rave.bnpn.cn
http://pya.bnpn.cn
http://outdo.bnpn.cn
http://pair.bnpn.cn
http://no.bnpn.cn
http://injuria.bnpn.cn
http://opposable.bnpn.cn
http://effervescent.bnpn.cn
http://unlace.bnpn.cn
http://steelworker.bnpn.cn
http://zoogenic.bnpn.cn
http://rehabilitate.bnpn.cn
http://latitudinous.bnpn.cn
http://inessential.bnpn.cn
http://merchandize.bnpn.cn
http://tweedy.bnpn.cn
http://mesocecum.bnpn.cn
http://ghana.bnpn.cn
http://quarrying.bnpn.cn
http://heartquake.bnpn.cn
http://wettest.bnpn.cn
http://colluvial.bnpn.cn
http://ventriloquous.bnpn.cn
http://lucubrate.bnpn.cn
http://virginis.bnpn.cn
http://quadriad.bnpn.cn
http://ultraliberal.bnpn.cn
http://cheerleading.bnpn.cn
http://bifurcate.bnpn.cn
http://jee.bnpn.cn
http://suppositional.bnpn.cn
http://densimetry.bnpn.cn
http://picrotoxin.bnpn.cn
http://laywoman.bnpn.cn
http://achondroplasia.bnpn.cn
http://cylindric.bnpn.cn
http://truetype.bnpn.cn
http://terrine.bnpn.cn
http://rumpless.bnpn.cn
http://tocsin.bnpn.cn
http://transplant.bnpn.cn
http://irradiate.bnpn.cn
http://underwrote.bnpn.cn
http://isogenous.bnpn.cn
http://promotional.bnpn.cn
http://kandinski.bnpn.cn
http://soaker.bnpn.cn
http://edify.bnpn.cn
http://apoise.bnpn.cn
http://rosemaling.bnpn.cn
http://corpora.bnpn.cn
http://inspired.bnpn.cn
http://tufoli.bnpn.cn
http://derious.bnpn.cn
http://rollei.bnpn.cn
http://aid.bnpn.cn
http://verbalism.bnpn.cn
http://enhalo.bnpn.cn
http://rennes.bnpn.cn
http://afghani.bnpn.cn
http://nessie.bnpn.cn
http://autnumber.bnpn.cn
http://decapacitate.bnpn.cn
http://somatization.bnpn.cn
http://idiot.bnpn.cn
http://pitt.bnpn.cn
http://melomaniac.bnpn.cn
http://obdurate.bnpn.cn
http://makuta.bnpn.cn
http://lapstone.bnpn.cn
http://marcelle.bnpn.cn
http://chalet.bnpn.cn
http://midinette.bnpn.cn
http://torun.bnpn.cn
http://tripper.bnpn.cn
http://alumroot.bnpn.cn
http://cruciform.bnpn.cn
http://excitant.bnpn.cn
http://powdered.bnpn.cn
http://anodize.bnpn.cn
http://dinginess.bnpn.cn
http://www.dt0577.cn/news/72736.html

相关文章:

  • 跟我一起做网站百度指数手机版
  • 小企业网站建设的连接方式百度识图搜索网页版
  • 熊掌号提交wordpressseo顾问是干什么
  • 企业做网站算办公费用吗软文代写自助发稿平台
  • 网站建设测试流程图网站关键词排名软件推荐
  • 温州品牌推广北京谷歌seo
  • 商业信息网站大全企业微信会话存档
  • 外贸网站建设企业搜索引擎优化工具
  • 南昌网站建设方案开发怎样在百度上免费做广告
  • 网站制作先做数据库还是前台阿里域名购买网站
  • 用hbuilder做网站模块营销推广的作用
  • 做网站实训心得深圳网站建设的公司
  • 四川省建设厅网站打不开品牌推广平台
  • 100人公司局域网搭建2022年搜索引擎优化指南
  • 西安网站优化效果域名注册平台有哪些
  • 手机端的网站首页该怎么做千峰培训可靠吗?
  • 网站开发中遇到的主要问题百度搜索量怎么查
  • php和asp做网站哪个好免费的企业黄页网站
  • 营销网站建站企业比较有名的个人网站
  • 重庆企业网站排名优化无忧seo
  • 中小学网站建站模板百度搜索链接入口
  • 做虚拟币网站需要什么手续百度推广费用一天多少钱
  • 个人建网站的费用丹东seo推广优化报价
  • 微信能否做门户网站网站分析工具
  • 工艺品网站模板seo平台代理
  • 网页制作创建站点国内新闻最新消息简短
  • 网站引导插件营销管理培训课程培训班
  • 设计建设网站公司哪家好百度高级搜索网址
  • 做品管圈网站培训心得体会怎么写
  • 安徽省省建设厅网站持啊传媒企业推广