• 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] != '' && s2[i] != '')
     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("%[^
    ]", arr);
    19      getchar();
    20     scanf("%[^
    ]", brr);
    21     printf("%d
    ", 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] != '')
     5     {
     6          i++;
     7      }
     8      while(1)
     9      {
    10         s1[i+j] = s2[j];
    11          if(s2[j] == '')
    12             break;
    13          j++;
    14      }
    15      return s1;
    16  }

    4、分割字符串

    char * strtok(char * str, const char * sep);
    将可变字符串str,以sep字符串里面的每一个字符作为分隔符进行分割
    1、改变原来字符串,把分隔符置换成''
    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 ", 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("%[^
    ]", 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] == '')
     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'
  • 相关阅读:
    一道亲戚的生物学改题
    【水】强化16题解
    【我为标程写注释】最大值最小化
    【我为标程写注释】卢斯进制
    oracle 解锁表
    Oracle存储过程根据指定日期返回(N个)工作日的时间
    NPOI_2.1.3_学习记录(6)-Excel中设置小数、百分比、货币、日期、科学计数法和金额大写
    NPOI_2.1.3_学习记录(5)-创建Excel的页眉页脚
    NPOI_2.1.3_学习记录(4)-Excel中单元格的复制
    NPOI_2.1.3_学习记录(2)-在Excel中创建工作表(Sheet)
  • 原文地址:https://www.cnblogs.com/lhy5678888/p/4424202.html
Copyright © 2020-2023  润新知