一、求字符串长度
strlen
size_t strlen (const char *str)
二、长度不受限制的字符串函数
strcpy (字符串拷贝 默认+'\0')
char *strcpy(char *dest,char *src)
strcmp (字符串比较,根据ascii码)
char *strcmp(char *dest,char *src)
strcat (字符串拼接,覆盖前一个'\0')
char *strcat(char *dest,char *src)
三、长度受限的字符串函数
strncpy (需要自己+'\0')
char *strncpy(char *dest,char *src,int num)
strncmp
char *strncmp(char *dest,char *src,int num)
strncat (默认+'\0')
char *strncat(char *dest,char *src,int num)
四、字符串查找
strchr (查找字符串s中首次出现字符c的位置。)
char *strchr(const char* s,char c)
strrchr(反向查)
strpbrk(第一个字符串中第一次出现在第二个字符串中的字符地址)
char *strpbrk(const char* str1,const char *str2)
strstr(找子串)
char *strstr(const char* str1,const char *str2)
五、高级字符串查找
1.strspn(str1字符串中开始部分匹配str2字符串中字符的个数)要为连续
size_t strspn (const char *str1,const char *str2)
2.strcspn(没出现的个数)
3.strtok(字符串分割)一次只会为两个
char *strtok(char *str,const char *sep)
sep参数是个字符串,定义了用作分隔符的字符集合
str参数为需要分割的字符串
一次只会分割成两个,前一部分为分割好的,后一部分还可以进行再一次分割
第一次调用的两个参数都必须写
第二次调用,第一个参数为NULL.那是因为里面有一个全局变量stack全局变量指针,这个指针不随函数调用完毕而释放,保存了位置,可以指向下一个位置
只要能够分割成功,就会返回分割子串的首地址,不成功,返回null
其实现的此函数的原理:就是定义两个指针,一个指向首地址,另一个向后面找,若遇见分隔符,即改为'\0',返回第一个指针即可。
若连出现多个字符串,即为空,无意义,所以此函数只返回有效字符串。
六、strerror(返回错误码所对应的错误信息)
头文件:#include<errno.h>
error:整形,全局变量(c库)0为成功,非0失败
七、字符分类函数
iscntrl:任何控制字符
isspace :空格字符
isdigit:十进制数0~9
isxdigit:十六进制数字
islower:小写字母
isupper:大写字母
isalpha:字母
isalnum:字母或数字
ispunct:标点符号
isgraph:任何图形字符
isprint:任何可打印字符
字符转化:
头文件:#include<ctype.h>
toupper:转小写
tolower:转大写
八、内存操作函数
1.memcpy
void *memcpy (void *dest ,void *src,int num)
未考虑内存重叠,遇到'\0'不会停下
2.memmove
void *memmove (void *dest,void *src ,int num)
考虑内存重叠
3.memcmp
int memcmp (const void *ptr1,const void *ptr2,int num)
4.memchr
void *memchr (const void* ,int ,size_t)
5.memset
void *memset(void *s, int ch,size_tn);