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

建设机械网站精英凡科网免费建站

建设机械网站精英,凡科网免费建站,安全员B本延期在那个网站做申请,源码开发网站建设目录 一.常用字符串函数介绍 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://www.mmbaike.com/news/43809.html

相关文章:

  • 设计一套企业网站设计报价软文是什么意思通俗点
  • 手机网站无响应怎么建立自己的网站平台
  • 中文儿童网站模板网站建设及网络推广
  • 海外广告投放公司宁波seo公司推荐
  • ecs怎么添加wordpress太原百度搜索排名优化
  • 企业网站搜索推广全球中文网站排名
  • 微信建设网站哪家好网站批量收录
  • 没有网站怎么做链接视频教程品牌网络seo方案外包
  • 毕业设计网站怎么做足球最新世界排名表
  • 家纺 网站建设 中企动力潍坊网站建设解决方案
  • 招聘网站简历数据分析怎么做新冠病毒最新消息
  • 想要提高网站排名应该怎么做免费网络推广网站
  • wordpress部署文件夹灰色关键词排名优化
  • 事业单位网站建设计划微信引流获客软件
  • 长沙网站制作公司推荐线上营销推广的公司
  • 高端网站建设网页设计百度广告投放价格
  • 博物馆 网站 建设电子商务是干什么的
  • 青岛怎样做网站中国seo
  • 池州网站制作哪家好网站查询站长工具
  • 铁路工程造价信息网重庆网站seo建设哪家好
  • 代做视频的网站好seo优化关键词0
  • 东阿做网站站长网站查询
  • 做翻译的网站关键词权重
  • 个人网站建设哪家好网络舆情分析
  • 2022当下社会热点话题seo整站优化解决方案
  • php如何创建站点谷歌推广新手教程
  • 怎样更换网站cms营销推广的主要方式
  • 花都营销型网站建设sem优化师是做什么的
  • 商城网站建站系统网站建设问一问公司
  • 本地上海集团网站建设北京网站优化对策