我们都知道,在C语言里有string.h这个头文件,但是C语言里没有string这个类型。
字符串通常放在常量字符串中或者字符数组中,字符串常量适用于那些对她不做修改的字符串函数。
string.h这个头文件里声明的函数原型也全是针对char数组的种种操作。
直到C++中才出现了string这个类

这篇文章就简单整理一下C语言中处理字符、字符串的库函数。

strlen

 size_t  strlen( const char*  str)

功能:计算字符串长度,不包含’\0’
返回值:返回字符串的字符数
说明:

  • strlen() 函数计算的是字符串的实际长度,遇到第一个’\0’结束;
  • 参数指向的字符串必须以 ’ \0 ‘结束
  • 函数返回值一定是size_t ,是无符号的
  • 如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止
  • sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数

strcpy

char* strcpy(char* dest,char* src)

功 能: 将参数src字符串拷贝至参数dest所指的地址
返回值: 返回参数dest的字符串起始地址
说明:

  • 源字符串必须以’\0’结束
  • 会将源字符串的’\0’拷贝到目标空间
  • 目标空间必须可变
  • 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代

strncpy

char* strncpy(char* dest,const char* src,size_t num)

功能:拷贝src字符串的前num个字符至dest
返回值:dest字符串起始地址
说明:

  • 如果src字符串长度小于num,则拷贝完字符串后,在目标后追加0,直到num个
  • strncpy不会向dest追加’\0’
  • src和dest所指的内存区域不能重叠,且dest必须有足够的空间放置n个字符

strcat

char* strcat(char* dest,const char* src)

功能: 字符串拼接
返回值:返回dest字符串起始地址
说明:

- 源字符串必须’\0’结束
- 目标空间必须可修改
- strcat() 会将参数src字符串复制到参数dest所指的字符串尾部
- dest最后的结束字符’\0’会被覆盖掉,并在连接后的字符串的尾部再增加一个’\0’
- dest与src所指的内存空间不能重叠,且dest要有足够的空间来容纳要复制的字符串

strncat

char* strncat (char* dest,const char* src,size_t num)

功能:将n个字符追加到字符串结尾
返回值:返回dest字符串的起始地址
说明:

  • strncat将会从字符串src的开头拷贝n个字符到dest字符串尾部
  • dest要有足够的空间来容纳要拷贝的字符串
  • 如果n大于字符串src的长度,那么仅将src全部追加到dest的尾部
  • strncat会将dest字符串最后的’\0’覆盖掉,字符追加完成后,再追加’\0’

strcmp

int strcmp (const char* str1,const char* str2)

功能:字符串比较
返回值:若参数s1和s2字符串相同则返回0,s1若大于s2则返回大于0的值,s1若小于s2则返回小于0的值
说明:

  • 判断两个字符串大小1)ASII码 2)长度
  • 区分大小写比较的,如果希望不区分大小写进行字符串比较,可以使用stricmp函数

strncmp

int strncmp(const char* str1,const char* str2,size_t num)

功能:指定长度比较
返回值:同strcmp

strstr

char* strstr(const char* str,const char* substr)
功能:检索子串在字符串中首次出现的位置
返回值:返回字符串str中第一次出现子串substr的地址;如果没有检索到子串,则返回NULL

strchr

char* strchr(const char* str,char c)

功能:查找字符串中第一次出现c的位置
返回值:返回首次出现c的位置的指针,如果s中不存在c则返回NULL

strrchr

char* strchr(const char* str,char c)

功能:查找字符串中最后一次出现c的位置
返回值:返回最后一次出现c的位置的指针,如果s中不存在c则返回NULL

strspn

size_t  strspn(const char* str1, const char* str2)

功能:用来计算str1字符串开始部分匹配str2字符串的字符个数
返回值:返回字符串str1开头连续包含字符串str2内的字符数目。

  • 如果str所包含的字符都属于str2,那么返回str1的长度
  • 如果str的第一个字符不属于str2,那么返回0

strcspn

size_t  strspn(const char* str1, const char* str2)

功能:用来计算str1字符串开始部分不匹配str2字符串的字符个数
返回值:返回字符串str1开头部分不出现在字符串str2内的字符数目。

strtok

char* strtok(char* str,const char* sep)

功能:根据分隔符将字符串分隔成一个个片段
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL
说明:
- sep参数是个字符串,定义了用作分隔符的字符集合
- 第一个参数指定一个字符串,它包含了一个或者多个由sqp字符串中一个或者多个字符分割的标记
- 第一次调用时将字符串首地址传进去,之后调用不用传地址,内部会有static函数保存指向地址
- 分隔符不作为输出内容,只做分界符
- 当strtok在参数s的字符串中发现到参数sep的分割字符时则会将该字符改为’\0’字符
- 在第一次调用时,strtok必须赋予参数str字符串,往后的调用则将参数s设置成NULL
- strtok会修改原字符串,所以必须放至栈上

strerror

char* strerror(int errnum)

功能:返回指向错误信息字符串的指针
说明:

  • 必须包含头文件errno.h

strpbrk

char* strpbrk(const char*  str1, const char* str2)

功能:在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,空字符NULL不包括在内

atoi

int atoi(const char* str)

功能:将字符串转换成整型
返回值:返回转换后的整型数。如果str不能转换成int或者str为空字符串,那么将返回0
说明:

  • ANSI C规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul()共6个可以将字符串转换为数字的函数,可以对比学习
  • 另外在C99/C++11规范中又新增了5个函数,分别是atoll()、strtof()、strtold()、strtoll()、strtoull()

字符分类函数:

int isalnum(int c):检查字符是否为数字或字母;(0~9,a~z,A~Z)
int isalpha(int c):检查字符是否为字母;(a~z, A~Z)
int iscntrl(int c):检查字符是否为控制字符;(八进制000~037以及177的字符)
int isdigit(int c):检查字符是否为十进制数字;(0~9)
int isgraph(int c):检查字符是否为图形表示,依赖于使用语言的环境;0~9,a~z,A~Z,以及标点符号)
int islower(int c):检查字符是否为小写的字母;(a~z)
int isprint(int c):检查字符是否为可打印的;(数字、字母、标点符号、空白字符)
int ispunct(int c):检查字符是否为标点符号;(! ” # $ % & ’ ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~等)
int isspace(int c):检查字符是否为空白字符;(TAB、换行、垂直TAB、换页、回车、空格)
int isupper(int c):检查字符是否为大写字母;(A~Z)
int isxdigit(int c):检查字符是否为十六进制数字;(0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f) 

字符转换

int tolower(int c):转化字符为小写字母;
int toupper(int c):转化字符为大写字母;

(C语言)常见字符函数和字符串函数相关推荐

  1. 常见的字符函数与字符串函数介绍(1)

    常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中.字符串常量适用于那些对它不做任何修改的字符串函 ...

  2. 用C语言模拟实现字符函数与字符串函数

    用C语言模拟实现字符函数与字符串函数 strncat.strncpy.atoi 若使用本文相关代码,还请动手点个赞!!! #define _CRT_SECURE_NO_WARNINGS 1 #incl ...

  3. 如何用C语言实现各种字符函数和字符串函数strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat

    用C语言模拟实现字符函数与字符串函数 strstr.memcpy.memmove.strlen.strcpy.strcmp.strcat 若使用本文相关代码,还请动手点个赞!!! #define _C ...

  4. c语言中常用的字符函数以及字符串函数

    文章目录 前言 一.常用字符串函数 1.strlen() 2.strcpy() 3.strcat() 4.strcmp() 5.strstr() 6.memcpy() 6.memmove() 二.qs ...

  5. 字符函数和字符串函数_R中的字符串–函数及其操作

    字符函数和字符串函数 Strings are generally a one-dimensional (1D) arrays that contain single or multiple value ...

  6. C语言函数: 字符串函数及模拟实现strtok()、strstr()、strerror()

    C语言函数: 字符串函数及模拟实现strtok().strstr().strerror() strstr()函数: 作用:字符串查找.在一串字符串中,查找另一串字符串是否存在. 形参: str2在st ...

  7. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

  8. 字符函数和字符串函数(上)

    字符函数和字符串函数 前言 一. strlen 1. '\0' 2. 返回值 3. strlen的模拟实现 二. strcpy 1. 源字符串必须以'\0'结束 2. 会将源字符中的'\0'拷贝到目标 ...

  9. java 字符串函数_Java字符串函数– 25+必须知道方法

    java 字符串函数 Java字符串函数 (Java String Functions) Java String class has a lot of functions to manipulate ...

  10. C语言,字符数组与字符串

    文章目录 字符数组基本介绍 字符串注意事项 字符串的访问和遍历 字符串的表示形式 用字符数组存放一个字符串: 用字符数组存放一个字符串, 用字符指针指向一个字符串 使用字符指针变量和字符数组两种方法表 ...

最新文章

  1. linux 指定时间加3天,Linux系统的定时任务和延时任务
  2. 最新发布丨游戏市场“超预期”增长背景下,如何加速产品精品化 运营精细化?
  3. ELK+Kafka 企业日志收集平台(一)
  4. 思维模型篇:四大战略分析工具
  5. html5input表单标签新属性
  6. 如何解决多线程并发访问一个资源的安全性问题?
  7. 盲人编程_帮助盲人学习编码
  8. oracleI基础入门(8)--table--union
  9. Android Service(一)概述、作用、生命周期
  10. 基于VS快速排序的单元测试
  11. (php毕业设计)基于thinkphp5小区物业管理系统
  12. 刻录光驱只能读不能写怎么办?来看看!
  13. 人工智能十大发展方向
  14. 网易2021校招笔试题节选个人解答(题目来源:牛客)
  15. 机器人城阳_玄德机器人墙板码板机城阳性能优异
  16. 【笔记】underfined和null
  17. qq音乐html5测试性格,根据你的听歌习惯测试你的性格
  18. 网络教育计算机统考-多媒体技术操作题
  19. SuperMap iServer常见问题解答集锦(十五)
  20. eclipse 创建java窗体_eclipse新建窗体类

热门文章

  1. python 实现 Pixiv 爬虫:下载画师的所有插画
  2. vue中封装ajax请求方法,Vue如何封装ajax
  3. 【MATLAB图像融合】[13]PCNN脉冲耦合神经网络基本原理
  4. .ini配置文件书写格式(转)
  5. 英语二计算机考研,2020考研分别适用于英语一英语二的专业盘点
  6. jq 循环获取某class所有的attr里面的值
  7. 马云:一篇百看不厌的文章
  8. 基于粤嵌gec6818开发板嵌入式开发电子相册,音乐播放,视频播放,2048游戏
  9. 【论文翻译】HinCTI: 基于异构信息网络的网络威胁情报建模与识别系统
  10. HIVE case when用法