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'

 

你可能感兴趣的:(字符串)