在我们做开发势必会遇到对字符串的处理,再次整理了较为常用的一下对字符串处理的函数,希望对大家有所帮助。话不多说直接开始:
1.bzero :内存初始化
函数原型:void *bzero(void *s, int n)
头文件:#include <string.h>
参数s:指向要清除内存空间的首地址;参数n:需要清除的空间大小(单位字节)。
函数说明:bzero()会将参数s所指向的内存的前n个字节设置为0,相当于对指定的内存进行初始化。
2.memcpy : 内存拷贝
函数原型:void memcpy(void *dest, const void *src, size_t n)
头文件:#include <string.h>
参数dest:拷贝到目标内存区域的首地址;参数src:拷贝内存的源区域的首地址。参数n:需要拷贝的大小(单位字节)
函数说明:memcpy()会将src的前n个字节拷贝到dest中。
注意:memcpy()会完整的拷贝n个字节,不会因有字符结束符(‘\0’)而停止。
3.memset :内存初始化
函数原型:void *memset(void *s, int c, size_t n)
头文件:#include <string.h>
参数s:需要设置值的内存的首地址;参数c:需要设置的值。参数n:设置空间的大小(单位字节)
函数说明:memset()会s的前n个字节设置为c,若c为0则和bzero()函数效果相同。
注意:memset的参数c虽然是int型,但必须是unsigned char,所以c的取址范围必须在0~255。
4.strcat :字符串拼接
函数原型:char *strcat(char * dest, const char * src)
头文件:#include <string.h>
参数dest:拼接完成字符串的首地址;参数src:需要拼接的字符串首地址。
返回值:返回dest的首地址
函数说明:strcat()会将字符串src拼接到dest字符串的后面,从而实现字符串的组合。
注意:strcat()的参数dest需要有足够的空间来容纳参数src到来的拼接。
strcat()的参数dest和src不能指向同一个地址,会出现死循环,导致越界溢出,破坏其他合法数据。
strcat()不会做内存越界的检查,使用的时候需要小心。可以用strncat()函数避免这个问题。strncat函数可以指定连接的大小。
int strncmp(const char *s1, const char *s2, size_t n);参数n:指定比较的前n个字节
5.strchr : 查找字符串中第一个出现的指定字符
函数原型:char * strchr(const char *s, int c)
头文件:#include <string.h>
参数s:检索的字符串;参数c:查找的字符串。
返回值:返回找到字符的地址。如果s中没有字符c,则返回0
函数说明:查找s所指向的字符串中第一次出现c的所在地址。
6.strcmp : 比较两个字符串
函数原型:int strcmp(const char *s1, const char * s2)
头文件:#include <string.h>
参数s1:字符串1;参数s2:字符串2。
返回值:返回s1 - s2的值。该值是s1和s2的ASCII值的差。如果差值为0,则说明s1和s2是相同的字符串。
函数说明:比较s1和s2字符串。
注意:s1和s2比较是从s1第一个字符减去s2的第一个字符的ASCII值的差,如果为0则比较下一个,依次类推。
7.strcpy : 字符串拷贝
函数原型:char *strcpy(char * dest, const char *src)
头文件:#include <string.h>
参数dest:目的拷贝地址;参数src:源拷贝地址。
返回值:返回拷贝后的dest的首地址
函数说明:将src指向空间的内容拷贝到dest所指向空间的内容
注意:参数dest的空间应足够大,不然会出现内存溢出(Buffer Overflow)错误。也可以用strncpy()避免内存错误的问题。
char *strncpy(char *dest, const char * src, size_t n);参数n为指定拷贝的大小
8.strlen : 计算字符串的大小
函数原型:size_t strlen(const char *s)
头文件:#include <string.h>
参数s:要计算字符串大小的首地址
返回值:返回字符串的大小(单位字节)
函数说明:strlen()用来计算字符串的长度,并且不包括字符串结束符。
注意:计算的长度是不包含字符串的结束符(\0)
9.strtok :分割字符串
函数原型:char *strtok(char *s,const char *delim)
头文件:#include <string.h>
参数s:欲要分割的字符串; 参数delim:分割字符
返回值:返回下一个分割后的字符串的首地址;如果不能在分割返回NULL
函数说明:以分割符delim分割字符串s
注意:strtok调用一次分割一次,对一个字符串完整的分割可以在第一次调用后再次调用strtok将参数s改为NULL,即可连续多次以delim分割字符串s。
谢谢大家阅读,如有不足或是错误,大家可以在评论区指出。再次作者还是希望读者可以自己去思考这些字符串处理函数的底层实现,试着自己封装函数来实现这些库里提供的字符串处理函数的功能,对读者C的水平会有一定的提升。