常常见到面试时让写str系列函数,用的少,经常忘记,记录一下。

1、strcat()

此函数原型为 char *strcat(char *dest, const char *src).
功能为连接两个字符串,把src连接到dest后面;返回dest地址
实现如下
[cpp] view plain copy
  1. char * strcat(char *dest,const char *src)
  2. {
  3. char* addr=dest;
  4. while(*dest)//找到'\0'
  5. {
  6. dest++;
  7. };
  8. while(*dest++=*src++)
  9. {};
  10. return addr;
  11. }

2、strcmp()

此函数的函数原型为 int strcmp(const char *str1, const char *str2).
功能为比较两个字符串。
当str1指向的字符串大于str2指向的字符串时,返回正数。
当str1指向的字符串等于str2指向的字符串时,返回0。
当str1指向的字符串小于str2指向的字符串时,返回负数。
实现如下:
[cpp] view plain copy
  1. int strcmp(const char *str1, const char *str2)
  2. {
  3. while(*str1==*str2)
  4. {
  5. if(*str1=='\0')
  6. return 0;
  7. str1++;
  8. str2++;
  9. }
  10. return *str1-*str2;
  11. }

3、strcpy()

此函数原型为 char *strcpy(char* dest, const char *src)
功能为拷贝字符串内容到目的串,把src所指向的内容拷贝到dest
实现如下
[cpp] view plain copy
  1. char *strcpy(char *dest,const char *src)
  2. {
  3. //assert(dest!=NULL&&src!=NULL);
  4. char *addr=dest;
  5. while(*dest++=*src++);
  6. return addr;
  7. }

4、strlen()

此函数原型为unsigned in strlen(const char *str)

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

实现如下:

[cpp] view plain copy
  1. unsigned int strlen(const char *str)
  2. {
  3. unsigned len=0;
  4. while(*str!='\0')
  5. {
  6. len++;
  7. str++;
  8. }
  9. return len;
  10. }

5、strchr()  strrchr()

char *strchr(char *str, char c)

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

[cpp] view plain copy
  1. char *strchr(char *str, char c)
  2. {
  3. while(*str!='\0'&&*str!=c)
  4. {
  5. str++;
  6. }
  7. return (*str==c? str: NULL);
  8. }

char *strrchr(char *str, char c)

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

[cpp] view plain copy
  1. char *strrchr(char *str, char c)
  2. {
  3. char *p=str+strlen(str);//p指向最后一个字符
  4. while(p!=str&&*p!=c)
  5. p--;
  6. if(p==str&&*p!=c)
  7. return NULL;
  8. else return p;
  9. }

6、strcspn()  strspn()

strcspn

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

MSDN解释为:在字符串pstr中搜寻strCharsret中所出现的字符,返回strCharset中出现的第一个字符在pstr中的出现位置。简单的说,若strcspn返回的数值为n,则代表字符串strCharsrt开头连续有n个字符不包含在pstr内的字符。

实现十分巧妙,在http://blog.csdn.net/chenyu2202863/article/details/5293941

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

功能:返回后面字符串中第一个不在前者出现的下表。

7、strdup()

此函数原型为char *strdup(const char *str)
功能为拷贝字符串到新建的内存,返回内存指针。若失败,返回NULL。要注意,返回的指针指向的内存在堆中,所以要手动释放。
函数实现:
[cpp] view plain copy
  1. char *strdup(const char *str)
  2. {
  3. char *p=NULL;
  4. if(str&&(p=(char*)malloc(strlen(str)+1)))
  5. strcpy(p,str);
  6. return p;

8、strrev()

此函数的原型为char *strrev(char *str)
功能为反转字符串,返回字符串指针。
函数实现:
[cpp] view plain copy
  1. char *strrev(char *str)
  2. {
  3. if(str==NULL)
  4. return NULL;
  5. char *start=str;
  6. char *end=str+strlen(str)-1;
  7. char temp;
  8. while(start<end)
  9. {
  10. temp=*start;
  11. *start=*end;
  12. *end=temp;
  13. start++;
  14. end--;
  15. }
  16. return str;
  17. }

9、strstr()

函数原型为char *strstr(const char str1, const char *str2)
功能为查找字符串str2在str1中出现的位置,找到则返回位置,否则返回NULL。

函数实现:
[cpp] view plain copy
  1. char *strstr(const char str1, const char *str2)
  2. {
  3. int length1=strlen(str1);
  4. int length2=strlen(str2);
  5. while(length1>=length2)
  6. {
  7. length1--;
  8. if(!strncpy(str1,str2,length2))//比较前n个字符串,类似strcpy
  9. return str1;
  10. str1++;
  11. }
  12. return NULL;
  13. }

C语言str函数系列相关推荐

  1. str开头的c语言函数介绍,C语言str函数系列

    1.strcat() 此函数原型为 char *strcat(char *dest, const char *src). 功能为连接两个字符串,把src连接到dest后面:返回dest地址 实现如下 ...

  2. R语言——str函数

    str函数 structure,紧凑地显示对象内部结构,即对象里有什么.

  3. c语言str相关的函数

    C语言str系列库函数在不同的库中有不同的实现方法,但原理都是一样的.因为库函数都是没有进行入口参数检查的,并且str系列库函数在面试中经常容易被面试官喊在纸上写某一个函数的实现,因此本文参考了Ope ...

  4. C语言str系列库函数

    C语言str系列库函数在不同的库中有不同的实现方法,但原理都是一样的.因为库函数都是没有进行入口参数检查的,并且str系列库函数在面试中经常容易被面试官喊在纸上写某一个函数的实现,因此本文参考了Ope ...

  5. Str库系列函数合集(strlen、strcpy、strcmp、strcat、strchr等)

    关于Str函数,网上五花八门,使初学者很容易迷失方向,笔者在这里做一个常用函数的总结.希望对读者起到些许帮助. 后续会持续更新特殊函数~ 想了解mem系列函数的,请猛戳这里→mem系列函数 代码 // ...

  6. 分段函数if语句_C语言函数系列之库函数中基础必会函数(一)

    !!!阅前提醒:!!! 此文为c语言函数系列的第一篇,全系列字数将达到1w字以上且全为干货内容,请各位仔细阅读并打开编译器运行文章中出现的代码进行试验以确保能理解文章内容 if判断函数(以图中显示代码 ...

  7. R语言查看对象的结构:class函数、mode函数、str函数、names函数

    R语言查看对象的结构:class函数.mode函数.str函数.names函数 目录 R语言查看对象的结构:class函数.mode函数.str函数.names函数

  8. R语言常用基础函数:length函数查看数据对象的长度、str函数查看数据对象的结构、class函数查看数据对象的类型、names函数查看数据对象的名称

    R语言常用基础函数:length函数查看数据对象的长度.str函数查看数据对象的结构.class函数查看数据对象的类型.names函数查看数据对象的名称 目录

  9. R语言学习笔记之str函数

    str函数 即structure,紧凑的显示对象内部结构,即对象里有什么. 例如:当我们head数据的时候,若某列内容太多,则不会显示出来,而用str函数,便可在窗口中逐行显示数据中列的内容. 如下图 ...

  10. H G W S哪一个不是状态函数_数据科学05 | R语言程序设计调试工具与str函数

    调试工具debugging tools ➢条件condition 用于提示运行函数过程中意外事件或错误的发生,编写函数时可以自行创造新的提示条件. message:由message()产生,输出提示信 ...

最新文章

  1. spring 框架学习(一)
  2. java map 结构体_业务代码的救星——Java 对象转换框架 MapStruct 妙用
  3. Linux下获取详细硬件信息的工具:Dmidecode命令详解
  4. 服务器发送退出状态127,WebDriverException:消息:服务chromedriver意外退出。状态代码为:127...
  5. Android移动开发之【Android实战项目】DAY15-翻页效果原理
  6. 【David Silver强化学习公开课之一】强化学习入门
  7. Debian Gnu/Linux 9关闭 111端口
  8. Kaggle新赛:通过音频识别鸟类和青蛙物种
  9. c语言将一个实型变量f=55.5678,《C语言程序设计》第2章2 常量和变量
  10. thinkphp-条件判断-范围判断-in
  11. 用数据追女神:追女生如同创业
  12. 机器学习- 吴恩达Andrew Ng 编程作业技巧 for Week3
  13. 美赛论文Latex模板说明
  14. 面向对象编程(OOP)的基本思想
  15. 【爱思考】CISP考试试题介绍(其中一部分)
  16. CISSP考试要涨价了,5月1日起考试费涨为749美元
  17. java 通过身份证计算年龄性别
  18. 电饭锅一会儿通电一会儿不通电【检修原因】
  19. 动态规划——1292:宠物小精灵之收服(二维背包问题)
  20. linux最大的账户,Linux系统账户安全

热门文章

  1. chrome 谷歌idm视频下载插件
  2. 2023年入学华东师范大学MBA提前面试流程及时间-文都管联院
  3. php水印文字方向,ppt文本框文字方向为所有文字旋转的设置方法
  4. 基于python mediapipe的视频或者图片更换背景
  5. 如何做好风险控制,规避项目中的风险
  6. Python求方阵的逆矩阵与求非方阵的伪逆矩阵
  7. Typora + PicGo + Github实现图床
  8. python eof是什么_EOF错误python
  9. 即时通信软件实现原理
  10. 计算机网络面试题汇总