五、strstr函数(查找字符串)
参数形式const char*strstr(const char*str1,const char*str2)
函数的特点:用一个指针去接受他的返回值,若查找成功则会返回一个指向一开始子串所在的位置
,之后就从子串所在的初始位置开始打印,如在abcdefg中找子串cd,则会返回c所在的地址,
如果打印这个指针就会从c的地址开始打印,所以结果是cdefg,若是有多个子串出现在主串上,则
返回出现第一次出现该串的地址,如absdabc,中查找子串ab则返回的是第一个的地址,若打印该
返回地址则得到的是absdabc;若查找失败,则会返回一个NULL。
函数的使用:
#include<stdio.h> #include<string.h> #include<errno.h> int main() { char arr1[20]={"abcdefgh"}; char*a= strstr(arr1,"abc"); if(a==NULL) { printf("%s\n",strerror(errno));//打印失败的原因 } printf("%s\n",a);//打印结果的 return 0; }
六、strtok函数(字符串切割)
函数的参数形式char*strstr(char*str,const char*sep);
其中sep是个字符串,里面包含了分隔符的字符集合(@*_>.)之类的。
函数特点:该函数第一次找到标记的符号时,会把该标记符号改成'\0',并打印从首元素到这个
'\0'的位置,之后每次传的都是NULL就可以了,因为这个函数会记住上次把那个分隔符变为'\0'
时的位置,注意使用一次字符串切割函数只会打印首元素到第一次出现标识符的位置;strtok函数
会改变原来的字符串,所以使用的时候最好拷贝一份。
#include<stdio.h> #include<string.h> int main() { char arr={"qwq@kong&chao"}; char*p={"@&"}; char buf[30]={0}; strcpy(buf,arr);//拷贝 for (char*ret = strtok(arr, p); ret != NULL; ret = strtok(NULL, p))//第一次传首元素地址 { printf("%s", ret); } return 0;
七、strerror(错误报告函数)
参数形式char*strerror(int errnum)
其中errnum是错误码,后面就没啥了,非常的简单。错误码大全是errno要引用头文件<errno.h>
函数没什么特点,就是单纯的把出错的信息打印出来,错误码所对应的信息
#include<stdio.h> #include<string.h> #include<errno.h> int main() { FILE*pf=fopen("test.txt","rb");//打开文件操作,用读的方式打开,后期会涉及滴 if(pf==NULL)//打开失败会返回一个NULL; { printf("%s\n",strerror(errno);//打印打开文件失败的原因 } else { printf("打开成功");//打开成功给的提示 } return 0; }
类似这种提示:(下图是文件不存在的提示)
八、字符转化函数
int tolower(int c) 转小写字母
int toupper(int c) 转大写字母
头文件是<ctype.h>
#include<stdio.h> #include<ctype.h> int main() { char ch=toupper('s');//转大写 char cc=tolower('G');//转小写 putchar(ch); putchar(cc); return 0; }