1、
就是这儿
然后是这儿
2、这种错误很可能就是进入了死循环
3、复习了字符串现场编写
1、strstr(const char *string, const char *substring):查找string中是否存在stringsub。
检查两个字符是否为空,
判断string和stringsub的长度大小
暴力搜索
2、找出一个字符串中第一个只出现一次的字符
方法:哈希表(定义256大小的数组)、bit映射(需要26大小的数组,仅仅适用于26个字母)
3、strcpy()字符串拷贝
检查源字符串首地址和目的字符串首地址是否相同
检查源字符串和目标字符串是否为空
定义char*临时变量保护目标地址strDes,一边返回适用
进行拷贝while((*strDes++=strSrc++)!='\0');
4、strncpy(char *strDes, const char *strSrc, unsigned int count)
从strSrc拷贝n个字符串到strDes
5、查找字符串 s 中首次出现字符 c 的位置
char *strchr(const char *str, int c)
6、比较字符串s和t第一个不相同的字符的大小,若s大,则返回正数,否则返回负数
int strcmp(const char *s, const char *t)
7、将strSrc复制到strDes之后
char *strcat(char *strDes, const char *strSrc)
8、返回字符串大小,建议将int改为size_t
int strlen(const char *str)
9、将字符串拷贝到新位置
char *strdup_(char *strSrc)
1、判断字符串是否为空
2、在堆上分配len+1个字节的内存,char *address=(char *)malloc(len+1)
3、复制数据
4、返回首地址新分配空间的首地址
10、剪切strSrc中的n个字符串到strDes之后。记得最后补上'\0'
char *strncat(char *strDes, const char *strSrc, unsigned int count)
11、比较前两个字符串前n个字符的大小,方法同strcmp()
int strncmp(const char *s, const char *t, unsigned int count)
12、返回字符串strSrc中第一个被包含在str中的字符,即:如str:abcd strSrc:efgc
char *strpbrk(const char *strSrc, const char *str)
13、返回字符串strSrc中第一个在str中出现的字符在s1中的下标值(返回strSrc中连续不在str中出现的字符长度)。
strSrc:abcd str:edfc结果:字符c,下标为2
int strcspn(const char *strSrc, const char *str)
14、返回字符串strSrc中第一个不在str字符串中出现的字符的下标。即返回字符串strSrc中连续包含在str中的字符个数
strSrc:acbd;
str:deac;
结果为b,下标为2
int strspn(const char *strSrc, const char *str)
15、查找字符c在字符串str中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回 false。与之相对应的是 strchr()函数,它查找字符串中首次出现指定字符的位置
char *strrchr(const char *str, int c)
16、用于反转字符串
char* strrev(char *str)
17、将一个串中的前count个字符都设为指定字符c
char *strnset(char *str, int c, unsigned int count)
18、将一个串都设为指定字符c
char *strset(char *str, int c)
19、分解字符串为一组字符串。strToken为要分解的字符串,str为分隔符字符串。
例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi。尤其在点分十进制的IP中提取应用较多
char *strtok(char *strToken, const char *str)
20、原型:extern char *strupr(char *s);