c 跟字符串有关的函数
1、字符串查找
strstr
char * strstr(const char *s1, const char *s2);
在s1中查找s2,如果找到返回首个s2的首地址
char * strcasestr(const char *s1, const char *s2);
在s1中查找s2,不区分大小写,如果找到返回首个s2的首地址
char * strnstr(const char *s1, const char *s2, size_t n);
在s1中的前n个字符中去查找s2,如果找到返回首个s2的首地址
2、字符串比较
int strcmp(const char *s1, const char *s2);
比较s1,s2 返回-1:s1<s2 0:s1=s2 1:s1>s2 int strncmp(const char *s1, const char *s2, size_t n);
比较s1,s2前n个字符 返回-1:s1<s2 0:s1=s2 1:s1>s2
1 #include<stdio.h>
2
3 int myStrCmp(const char *s1,const char *s2)
4 {
5 int i = 0;
6 while(s1[i] != '\0' && s2[i] != '\0')
7 {
8 if(s1[i] != s2[i])
9 return s1[i] - s2[i];
10 i++;
11 }
12 return s1[i] - s2[i];
13 }
14
15 int main(void)
16 {
17 char arr[30],brr[30],ch;
18 scanf("%[^\n]", arr);
19 getchar();
20 scanf("%[^\n]", brr);
21 printf("%d\n", myStrCmp(arr,brr));
22 return 0;
23 }
3、字符串拼接
char * strcat(char *restrict s1, const char *restrict s2); 将s2拼接到s1上。
char * strncat(char *restrict s1, const char *restrict s2, size_t n);
将s2的前n个字符拼接到s1上
1 char * myStrcat(char *s1,const char *s2)
2 {
3 int i = 0,j = 0;
4 while(s1[i] != '\0')
5 {
6 i++;
7 }
8 while(1)
9 {
10 s1[i+j] = s2[j];
11 if(s2[j] == '\0')
12 break;
13 j++;
14 }
15 return s1;
16 }
4、分割字符串
char * strtok(char * str, const char * sep);
将可变字符串str,以sep字符串里面的每一个字符作为分隔符进行分割
1、改变原来字符串,把分隔符置换成'\0'
char * 分割成功返回分割首地址,分割失败返回NULL
<可用于查找字符串中最长的单词是哪个>
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[] = "Hi, welcone to here";
char *sep = ", "; //字符串
char *p = strtok(str,sep);
while(p)
{
printf("p=%s\n", p);
p = strtok(NULL, sep);//NULL继续往后进行分割
}
return 0 ;
}
运行结果:
Hi
welcome
to
here
查找出字符串中最长的单词
1 #include<stdio.h>
2 #include<string.h>
3 int main(void)
4 {
5 char str[50];
6 scanf("%[^\n]", str);//遇到回车符结束
7 char *sep = ", ";
8 char *p = strtok(str,sep),*maxp = NULL;
9 int count=0,maxCount=0;
10 while(p)
11 {
12 count = strlen(p);
13 if(count > maxCount)
14 {
15 maxp = p;
16 maxCount = count;
17 }
18 p = strtok(NULL, sep);//NULL继续往后进行分割
19 }
20 puts(maxp);
21 return 0 ;
22 }
5、strcpy
char * stpcpy(char *dst, const char *src); 把src拷贝到dst中
char * stpncpy(char *restrict dst, const char *restrict src, size_t n);
把src前n个字符拷贝到dst中去
1 char * myStrcpy(char *s1, const char *s2)
2 {
3 int i = 0;
4 while(1)
5 {
6 s1[i] = s2[i];
7 if(s2[i] == '\0')
8 break;
9 i++;
10 }
11 return s1;
12 }
6、其它函数
isalpha() 判断是否为字母 'a'~'z' 'A'~'Z'
isalnum() 判断是否为数字或字母 '0'~'9' 'a'~'z' 'A'~'Z'
isdigit() 判断是否为数字 '0'~'9'
0的ASCII是60,判断一个字符是否为数字 c >= '0' && c <= '9' return c - 60
isspace() 判断是否空格' '
isupper() 判断是否为大写 'A'
islower() 判断是否为小写 'a'