字符串操作常用函数三
知识点;
1.strchr;
函数原型;char *strchr(const char *str,char c)
str – 要被检索的 c 字符串
c – 在 str 中要搜索的字符
功能;
在参数str所指向的字符串中搜索第一次出现字符c(一个无符号字符)的位置
返回值;
返回一个指向该字符串中第一次出现的字符的指针,如果字符串中不包含该字符则返回NULL空指针。
头文件;
#include <string.h>
char *str = "chenlichen";
char c = 'n';
char *p = NULL;
p = strchr(str,c);
if(p == NULL){
printf("没有找到\n");
}else{
printf("已找到\n");
puts(p);
}
//puts(p);
运行结果
2. strstr;
strstr()函数头文件;
#include <string.h>
strstr()函数用来检索子串在字符中首次出现的位置,其原型为;
char *strstr(char *str,char * substr)
函数参数
str参数为要检索的字符串
substr 参数为要检索的子串。
函数返回值;
返回字符串str中第一次出现子串substr的地址;如果没有检索到子串, 则返回NULL
char *str = "chenlichen";
char c = 'n';
char *p = NULL;
char *substr = "li";
p = strstr(str,substr);
if(p == NULL){
printf("没有找到\n");
}else{
printf("已找到\n");
puts(p);
运行结果
3.strlwr 和 strupr
用于将字符串中的字符转换为小写,其原型为;
char *strlwr(char *str);
【参数说明】str为要转换的字符串。
【返回值】返回转换后的小写字符串,其实就是将str返回
strupr;
strupr转为大写的函数
作用跟strlwr相反,用法一样
char str1[] = "Hello World"; //windows环境下,要定义成数组形态,否则崩溃 Linux下是可以的
puts(strlwr(str1));
puts(strupr(str1));
运行结果
4.strtok
strtok 字符串的分割
char *strtok(char *string,const char *tokseps);
举例;chen,li ,chen
strtok 字符串的分割
char *strtok(char *string,const char *tokseps);
举例;chen li chen
*/
char str2[] = "chen,li,chen2,hello,world";//windows环境下,要定义成数组形态,否则崩溃 Linux下是可以的
int i=1;
p = strtok(str2,",");
if(p!=NULL){
//printf("获取到底第一个串p= %s\n",p);
}
/*
//获取第二个串的方式很奇葩,跟第一次不一样的是,目标字符串改成NULL
p = strtok(NULL,",");
printf("获取到底第二个串p= %s\n",p);
//获取第三个串的方式很奇葩,跟第一次不一样的是,目标字符串改成NULL
p = strtok(NULL,",");
printf("获取到底第三个串p= %s\n",p);
p = strtok(NULL,",");
printf("获取到底第四个串p= %s\n",p);
p = strtok(NULL,",");
printf("获取到底第五个串p= %s\n",p);
p = strtok(NULL,",");
if(p==NULL){
//printf("没有子串了\n");
}
printf("获取到底第六个串p= %s\n",p);
*/
//改进法;
// p = strtok(str2,",");
if(p!=NULL){
printf("获取到底第一个串p= %s\n",p);
}
while(1){
i++;
p = strtok(NULL,",");
if(p!=NULL){
printf("获取到底第%d个串p= %s\n",i,p);
}else{
printf("没有子串了\n");
break;
}
//printf("获取到底第二个串p= %s\n",p);
}
/*
//获取第二个串的方式很奇葩,跟第一次不一样的是,目标字符串改成NULL
p = strtok(NULL,",");
printf("获取到底第二个串p= %s\n",p);
//获取第三个串的方式很奇葩,跟第一次不一样的是,目标字符串改成NULL
p = strtok(NULL,",");
printf("获取到底第三个串p= %s\n",p);
p = strtok(NULL,",");
printf("获取到底第四个串p= %s\n",p);
p = strtok(NULL,",");
printf("获取到底第五个串p= %s\n",p);
p = strtok(NULL,",");
if(p==NULL){
printf("没有子串了\n");
}
printf("获取到底第六个串p= %s\n",p);
*/
注意;第四个需要看很多遍!