超全字符和字符串函数介绍,看看有没有你不会的

张开发
2026/4/17 7:21:57 15 分钟阅读

分享文章

超全字符和字符串函数介绍,看看有没有你不会的
在c语言的使用当中我们常常需要对一些字符和字符串进行操作为了方便使用c语言标准库里提供了一系列函数让我们来学习一下这些函数1.字符分类函数顾名思义字符分类函数就是对字符进行分类的函数为了使用这些函数我们需要包含一个头文件ctype.h.,下图是对这些函数进行的介绍这些函数的使用方法都是非常类似的所以我们只介绍其中一个islower:该函数用来判断字符是否为小写字母是的话返回非0的数不是则返回0练习:将字符串中小写字母转为大写其他字符不变这里来给大家一个练习下面为解法2.字符转换函数c语言标准库中提供了两个字符转换函数,tolower函数和toupper函数,两者分别用来将大写字符转化为小写字符将小写字符转化为大写字符有了这两个函数上述的练习就可以直接使用。3.strlen函数该函数需要包含string.h这个头文件size_t strlen(const char *a)功能:用来计算a指向的字符串\0之前字符的个数返回值:返回的是字符串的长度不会是负数所以函数的返回类型是size_t.3.1代码演示下面来演示一下该函数的使用注意事项:1.该函数统计的是字符串里\0之前字符的个数,不包括\02.传给函数的指针指向的字符串必须包含\03.函数的返回值类型为size_t(无符号整数)3.2函数的模拟实现这里提供3种方法3.2.1计数器这里通过定义一个计数器来计算字符串的长度3.2.2递归递归是一种算法思想通过将一个大的目标细化为一个个小的任务可以看到在my_strlen函数中先对指针a指向的数据进行判断如果是\0说明a已经遍历完这个字符串了直接返回0就可以如果不是\0,说明字符串中还有元素没有计算返回1和a的下一个指针的函数值。这样可以不用创建临时变量一层套一层同样也能达到同样的效果3.2.3指针这个方法是通过指针来实现的这里补充一些指针的知识我们都知道指针数字可以得到另一个指针指针-数字也可以得到另一个指针那么指针是否也可以进行-运算呢答案是可以进行-运算不能进行运算指针指针是没有任何意义的而指针-指针则可以得到一个数字这个数字的含义是第一个指针和第二个指针中间相差的指针的个数tips:地址在内存中是从低到高进行储存的接下来来通过指针的方法进行计算这种方法也是可行的4.strcpy函数功能:这个函数用来将source指向的字符串拷贝到destination指向的字符串参数:destination:指向目标字符串,source:指向源字符串返回值:直接返回目标空间的起始地址4.1代码演示这里来演示一下strcpy函数的使用注意事项:1.该函数会将源字符串中的字符包括\0一起复制到目标字符串中2.源字符串必须要有\0结尾3.目标空间必须足够大以保证可以存得下源字符串4.目标空间必须可修改这里补充下一个知识为什么一定要强调目标空间必须可修改呢那么有没有目标空间不能修改的情况有的c语言中提供了一个关键字const4.2 constconst是用来修饰变量的使用方法是直接在变量的创建前加上constconst在修饰指针变量时要更特殊些4.2.1const修饰指针变量这里可以分为两种情况第一种写法:const int * pa;这种写法的意思是你不能通过pa进行解引用从而更改pa指向的对象的值第二种写法: int* const pa;这种写法的意思是你不能修改pa这个指针中的地址但可以通过这个指针修改pa指向的变量的值4.3模拟实现接下来我们来模拟实现一下这个函数tips这里的assert断言需要包含头文件assert.h5.strcat函数接下来来介绍strcat函数功能:将src字符串的内容拷贝到des字符串的后面参数和返回值与strcpy函数一下这里不啰嗦了.5.1代码演示这里定义a,b数组时不能像前面一样不指定数组大小这样会导致后面出现栈溢出的问题5.2模拟实现创建临时变量now的意义是储存des指向字符串的首地址6.strcmp函数功能:用来比较两个字符串的大小从第一个字符开始比较如果str1str2返回大于0的数如果str1str2,返回小于0的数如果两个字符串相等就返回0参数;两个用来比较的字符串6.1代码演示6.2模拟实现7.strncpy函数这个函数与strcpy是类似的只不过strncpy多了一个参数这个参数是用来指定拷贝个数的7.1代码演示这个函数只拷贝了2个字符也就是ef到a字符串中覆盖掉了ab7.2对比strcpy这个函数与strcpy不同的点除了可以指定拷贝元素的个数外它并不要求源字符串中有\0同时使用的时候也需要考虑到目标空间是否足够8.strncat函数这个函数与strcat函数是类似的只不过它同样多了可以指定元素的功能它能够指定你要追加的元素个数8.1代码演示这里指定的参数是2所以就只拷贝了ed到a字符串的后面8.2对比strcat除了可以指定参数外strncat并不要求源字符串中有\09.strncmp函数同样与strcmp函数相似这个函数可以指定要比较的字符个数9.1代码演示由于只比较了前三个字符所以返回的是09.2对比strcmp可以指定比较的长度更加灵活安全10.strstr函数功能:这个函数是用来在第一个字符串中查找第二个字符串的返回值:如果找到了就返回第一次出现第二个字符串的地址如果没找到则返回空指针10.1代码演示10.2模拟实现这里运用多个指针来进行该函数的模拟实现。首先创建s1,s2指针表示当前查找到的位置再创建一个cp指针来表示可能查找到第二个字符串的位置11.strtok函数char*strtok(char* str,const char*delim);功能:将第一个字符串按照提供的分隔符delim分成一个个子字符串,同时也会直接修改第一个字符串会插入\0来替换分割符的位置参数:str:要分割的字符串(首次调用传入字符串后续调用传入指针表示继续切割同一个字符串)delim:分隔符.返回值:成功时返回指向当前子字符串的指针如果没有子字符串了就返回NULL11.1代码演示11.2注意事项1.多个连续的分割符会被视为一个分格符不会返回空字符串2.在传入NULL之前必须调用一次函数12.strerror函数char*strerror(interrnum );功能:根据传递过来的整数返回相应的错误码返回值:错误码字符串的地址12.1代码演示13.perror函数perror相当于printf函数和strerror函数相结合以上就是本篇文章的全部内容了如果对你有帮助可以点个赞支持一下感谢各位的观看陌染青云 (mo-ran-qingyun) - Gitee.com这是我个人的gitee仓库,账号上文章的代码都会发到仓库里有兴趣可以看一下

更多文章