目录

1.strlen函数

2.strcpy函数

3.strcat函数

4.strncat函数

5.strcmp函数

6.strimp函数

7.strncmp函数

拓展:

(1)strnicmp函数

(2)strcasecmp函数

(3)strncasecmp函数

8.strchr函数

9.strrchr函数

10.strcspn函数

11.strspn函数

12.strdup函数

13.strrev函数

14.strstr函数

15.strtok函数

拓展:

(1)strtok_s函数

(2)strtok_r函数

16.strpbrk函数


1.strlen函数

原型:size_t strlen(const char *str)

功能:返回字符串str的长度(不包括'\0')。

实现如下:

size_t my_strlen(const char *str)
{assert(str != NULL);int count = 0;while (*str != '\0'){count++;str++;}return count;
}

2.strcpy函数

原型:char *strcpy(char *dest, const char *src)

功能:strcpy为覆盖拷贝,将src所指向的内容全覆盖拷贝到dest。

实现如下:

void my_strcpy(char *dst, const char *src)
{while (*src){*dst = *src;++src;++dst;}*dst = '\0';
}

3.strcat函数

原型:char* strcat(char *dst, const char *src)

功能:功能为连接两个字符串,把src连接到dest后面;返回dest地址。

实现如下:

char *my_strcat(char *dest,const char *src)
{char* addr=dest;while(*dest)//{dest++;};while(*dest++=*src++){};return addr;
}

4.strncat函数

原型:char *strncat(char *dest, const char *src, int n)

功能:指定长度,追加拷贝,将src指向的字符串的前n个字符追加拷贝到dest指向的字符串后面。

实现如下:

char *my_strncat(char *dest, const char *src, int n)
{char* ret = dest;assert(dest != NULL && src != NULL);while (*dest != '\0')dest++;while (n && (*dest++ = *src++) != '\0')n--;*dest = '\0';return ret;
}

5.strcmp函数

原型:int strcmp(const char *str1, const char *str2)

功能:比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较。
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

实现如下:

int my_strcmp(const char *str1, const char *str2)
{while(*str1==*str2){if(*str1=='\0')return 0;str1++;str2++;}return *str1-*str2;
}

6.strimp函数

原型:int stricmp(const char *str1, const char *str2)

功能:比较字符串str1和str2,按ASCLL码比较,但不区分字母的大小写。
当str1<str2时,返回值<0
当str1=str2时,返回值=0
当str1>str2时,返回值>0

实现如下:

int my_strcmp(const char *str1, const char *str2)
{while(*str1==*str2||(*str1+32)==*str2||(*str1-32)==*str2){if(*str1=='\0')return 0;str1++;str2++;}return *str1%97-*str2%97;
}

7.strncmp函数

原型:int strncmp(const char *str1, const char *str2,int n)

功能:比较字符串str1和str2的前n个字符串,按ASCLL码比较。
当str1<str2时,返回值<0
当str1=str2时,返回值=0
当str1>str2时,返回值>0

实现如下:

int my_str_ncmp(const char * str1, const char * str2, int n)
{if (NULL == str1 || NULL == str2 || n <= 0){exit(EXIT_FAILURE);}char* pos1 = NULL;char* pos2 = NULL;pos1 = str1;pos2 = str2;int ret = 0;while (0 != n && (*pos1 == *pos2)){++pos1;++pos2;--n;}ret = *pos1 - *pos2;if (0 == ret)return 0;else if (ret < 0)return -1;elsereturn 1;
}

拓展:

(1)strnicmp函数

原型:int strnicmp(const char *str1, const char *str2,int n)

功能:比较字符串str1和str2的前n个字符串,按ASCLL码比较,但不区分字母的大小写。
当str1<str2时,返回值<0
当str1=str2时,返回值=0
当str1>str2时,返回值>0

(2)strcasecmp函数

Linux下特有函数,功能相当于stricmp函数

(3)strncasecmp函数

Linux下特有函数,功能相当于strnicmp函数

8.strchr函数

原型:char *strchr(char *str, char c)

功能:查找str中首次出现c的位置,如有有,则返回出现位置,否则返回NULL。

实现如下:

char *my_strchr(char *str, char c)
{while(*str!='\0'&&*str!=c){str++;}return (*str==c? str: NULL);
}

9.strrchr函数

原型:char *strrchr(char *str, char c)

功能:查找str中最后一次出现c的位置,如有有,则返回出现位置,否则返回NULL。

实现如下:

char *my_strrchr(char *str, char c)
{char *p=str+strlen(str);//p指向最后一个字符while(p!=str&&*p!=c)p--;if(p==str&&*p!=c)return NULL;else return p;
}

10.strcspn函数

原型:size_t strcspn(const char *pstr, const char *strCharset)

功能:用于检索pstr开头连续有几个字符不包含于strCgarset中。

实现:https://blog.csdn.net/chenyu2202863/article/details/5293941

11.strspn函数

原型:size_t strspn(const char *pstr, const char *strCharset)

功能:用于检索pstr开头连续有几个字符包含于strCgarset中。

12.strdup函数

原型:char* strdup(const char* str)

功能:拷贝字符串到新建的内存,返回内存指针。若失败,返回NULL。(返回的指针指向的内存在堆中,需要手动释放。)

实现如下:

char *my_strdup(const char *str)
{char *p=NULL;if(str&&(p=(char*)malloc(strlen(str)+1)))strcpy(p,str);return p;

13.strrev函数

原型:char *strrev(char *str)

功能:反转字符串,返回字符串指针。

实现如下:

char *my_strrev(char *str)
{if(str==NULL)return NULL;char *start=str;char *end=str+strlen(str)-1;char temp;while(start<end){temp=*start;*start=*end;*end=temp;start++;end--;}return str;
}

14.strstr函数

原型:char *strstr(const char str1, const char *str2)

功能:在字符串str1中查找是否含有字符串str2,如果存在,返回str2在str1中第一次出现的地址;否则返回NULL。

实现如下:

char *my_strstr(const char str1, const char *str2)
{int length1=strlen(str1);int length2=strlen(str2);while(length1>=length2){length1--;if(!strncpy(str1,str2,length2))//比较前n个字符串,类似strcpyreturn str1;str1++;}return NULL;
}

15.strtok函数

原型:char *strtok(char *str, const char *delim)

功能:在str指向的字符串中检索包含于delim所指向的字符串中的字符,并对str进行分割;返回str被分解的第一个子字符串,若无可检索的字符串,则返回NULL。

实现如下:

char *my_strtok(char *str,const char *delim)
{static char *next_start = NULL; if(str == NULL && (str = next_start) == NULL){return NULL;}char       *s = str;const char *t = NULL;while(*s){t = delim;while(*t){if(*t == *s){next_start = s + 1;if(s == str) {str = next_start;break;}else{*s = '\0';return str;}}else{t++;}}s++;}return NULL;
}

拓展:

(1)strtok_s函数

原型:char *strtok_s( char *strToken, const char *strDelimit, char **buf)

strtok_s是windows下的一个分割字符串安全函数,这个函数将剩余的字符串存储在buf变量中,而不是静态变量中,从而保证了安全性。

(2)strtok_r函数

原型:char *strtok_r(char *str, const char *delim, char **saveptr)

strtok_s函数是linux下分割字符串的安全函数,该函数也会破坏待分解字符串的完整性,但是其将剩余的字符串保存在saveptr变量中,保证了安全性。

16.strpbrk函数

原型:char * strpbrk(const char *str1,const char *str2)

功能:从str1的第一个字符向后检索,直到'\0',如果当前字符存在于str2中,那么返回当前字符的地址,并停止检索;若str1、str2中无相同的字符,则返回NULL。

实现如下:

char * strpbrk(const char * cs,const char * ct)
{const char *sc1,*sc2;for( sc1 = cs; *sc1 != '\0'; ++sc1) {for( sc2 = ct; *sc2 != '\0'; ++sc2) {if (*sc1 == *sc2)return (char *) sc1;}}return NULL;
}

17.substr函数——s.substr(l, r)

功能:用于截取字符串,从第l个截取至第r个

【例】

#include<iostream>
#include<string>
using namespace std;
int main()
{string s;cin >> s;string t = s.substr(2, 5);cout << t;return 0;
}

C/C++中的str系列函数大全相关推荐

  1. c语言str系列函数

    qsort() str系列函数 isalpha() 1,qsort() 功能: 快速排序,其时间复杂度为n*log(n) 头文件: <stdlib.h> 声明: void qsort(vo ...

  2. python items函数用法,Python中dictionary items()系列函数的用法实例

    本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...

  3. C++中string类函数常用函数大全

    最近,写各种关于字符串的问题,遇到不少题目解法或多或少的调用各种方法,今个发现了个大佬的总结,自己码一下保存(自己的编译器慢慢看,看文档,这谁看的进去这么多..) 大佬原文链接在最下面 string类 ...

  4. C语言str系列函数操作

    1.strcpy ①函数原型:char * strcpy(char * destination,const char * source); ②作用:将source指向的C字符串复制到destinati ...

  5. c语言中格式化字符串系列函数包括,解析C语言中常用的格式化输入、输出函数...

    fprintf(格式化输出数据至文件) 这个函数的功能类似于文件操作函数 fwrite();通过一个文件描述符将数据写入该文件描述符所指向的文件中. 函数定义: int fprintf(FILE * ...

  6. Mysql中INSTR(str, substr)函数

    函数介绍 INSTR(str, substr):返回子串substr在字符串str中的第一个出现的位置,如果存在则返回1~N,不存在返回0,任意一个字符串为NULL则返回NULL. 函数实例 INST ...

  7. str系列函数详解(包会)

    1.strlen 字符串向后依次遍历,直到找到'\0'为止,返回数字不计入'\0'. 2.strcpy 输入两个字符串作为参数,例如strcpy(arr1,arr2),函数将arr2中的每个字符依次替 ...

  8. js保留两位小数的函数_如何在Excel中使用ROUND系列函数

    1. ROUND函数是对某个数字,根据指定的小数位进行四舍五入. 2. 先来看一个简单的例子"=ROUND(3.1415,2)",这是取3.1415的小数点后两位,四舍五入,得到3 ...

  9. mem库系列函数合集(memset、memchr、memcmp、memcpy)

    关于Mem函数,网上五花八门,使初学者很容易迷失方向,笔者在这里做一个常用函数的总结.希望对读者起到些许帮助. 想了解Str系列函数的,请猛戳这里→Str系列函数大全 代码 //头文件:#includ ...

最新文章

  1. python调用math函数log_Python中求对数方法总结
  2. 美团点评业务风控系统构建经验
  3. echarts symbol 回调函数_凹函数和凸函数到底什么样?傻傻分不清楚
  4. 牛客题霸 [将字符串转化为整数] C++题解/答案
  5. mouseevent tips
  6. select switch语句总是搞混,总结如下
  7. 这个自然语言处理“工具”,玩得停不下来
  8. 经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解
  9. 字节约翰斯·霍普金斯上交提出iBOT框架,基于MIM进行自监督训练,在ImageNet-1K上达到86.3%的微调精度!...
  10. Mac下安装virtualenvwrapper提示ERROR: No matching distribution found for pbr
  11. HTML5div css入门案例,div+css教学教案(学习入门到精通~)详细讲解.doc
  12. cad会员共享_CAD迷你画图共享版下载
  13. 小程序嵌套h5界面,在h5界面调用小程序的扫一扫功能(自用方法3)
  14. windows错误代码
  15. Paddle-Lite 安卓端部署
  16. 爬虫三:用xpath爬取链家网二手房信息
  17. 华为软开云2--玩转代码托管
  18. 被忽视的开发安全问题
  19. linux jdk,hadoop,zookeeper, hive , zeppelin ,sqoop ,hbase,scala,spark,flume,kafka 安装终极脚本全家桶安装
  20. 做程序员的第八个年头——2021年个人工作总结

热门文章

  1. 天猫高管全面解读大快消2018新零售打法
  2. 对LMAX架构以及Event Sourcing模式的一些新思考和问题的记录
  3. uni-app开发的微信小程序隐藏返回首页按钮
  4. docker 改host_Docker容器修改端口映射
  5. AI绘图参数设置和一些注意点
  6. linux 查看dns进程,探查Linux系统DNS服务器运行状况
  7. 00 | 基础编程题目集题解传送门
  8. 9秒学院-技术宅七夕示爱招数“高大上”赶快来看看
  9. 《Blockchained On-Device Federated Learning》精读
  10. 网页版百度网盘倍速方法