C语言关于字符串操作函数汇总与代码实现

  1. char *strstr( char *str1, const char *str2);
    //查找str2 是否在 str1 中,如果在则返回从str2开始的位置到str1结束位置的所有字符
  2. char *strchr(const char *str, int ch);
    //查找字符 ch 在字符串 str 中首次出现的位置,成功则返回从 ch 开始位置到 str 的结束位置所有字符
  3. char *strrchr(const char *str, int ch);
    //查找某字符在字符串中最后一次出现的位置,成功则返回从 ch 开始位置到 str 的结束位置所有字符
  4. strcpy(char *dest, const char *src);
    //将字符串source 拷贝到字符串 dest 中
  5. strncpy(char *dest, const char *sr, size_t n)
    //将参数src字符串拷贝前n个字符至参数dest所指的地址
  6. sscanf (const char *str,const char * format,…);
  7. strlen(…) //求字符串的实际长度
  8. strcmp(str1,str2) //比较两个字符串的大小
  9. strncmp(const char *str1, const char *str2, size_t n)
    //比较两个字符串的前 n 个字节
  10. strcat(str1, str2) //链接两字符串
  11. strncat(str1,str2,n)
    //将字符串str2的前n个字符添加到字符串str1的尾部
  12. strpbrk(str1,str2)
    //依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置
  13. atoi(str); //字符串转换到int整型
  14. atof(str); //字符串转换到double浮点数
  15. atol(str); //字符串转换到long整形
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/*strstr( )*/
void StrStr(char *s1, const char *s2)
{
      char *PStr;
      PStr = strstr(s1, s2);
      printf("strstr: %s\n", PStr);    //打印结果:likeabird
      if(PStr != NULL)
         PStr = PStr + 4;
      printf("strstr_1: %s\n", PStr);  //打印结果:abird

}

/*strchr( )*/
void StrChr(char *s, char c)
{
      char *p;
      p =strchr(s, c);
      printf("strchr: %s\n", p);
}

/*strrchr( )  strcpy( )*/
void StrrChrAndStrcpy(char *s, char c)
{
      char *p;
      char resultStr[32]={0};
      p =strrchr(s, c);
      
      if(p != NULL)
      {
          strcpy(resultStr, p + 1);
      }
      printf("strrchr: %s\n", resultStr);
}
/*sscanf(...)*/
void Sscanf(const char *s)
{
      char result[64];
      /*获取指定长度字符串*/
      sscanf(s, "%4s", result);
      printf("sscanf_1: %s\n", result);
      /*取到指定字符为止的字符串,取遇到空格为止字符串*/ 
      sscanf(s, "%[^ ]", result);
      printf("sscanf_2: %s\n", result);
      /*取仅包含指定字符集的字符串*/
      sscanf(s, "%[1-9a-z]", result);   //只取数字和小写字符
      printf("sscanf_3: %s\n", result);
      /*取到指定字符集为止的字符串*/
      sscanf(s, "%[^a-z]", result); 
      printf("sscanf_4: %s\n", result); //取遇到小写字母为止的字符串
      /*取需要的字符串*/
      int a; char b; char c[64];
      sscanf(s, "%d,%c,%s", &a,&b,c);   //取需要的字符串
      printf("sscanf_5:\n a = %d, b = %c, c = %s\n", a, b, c);
       /*取出$与$之间的字符串*/
       /*解释: 其中%[]类似于一个正则表达式,如[a-z]表示读取所有a-z的字符,[^a-z]表示读取所有非小写字母的字符。
   那么在这里%*[^$]表示先过滤掉 '1234,A,',然后以$隔开,后面还剩youare$....,然后将$之前非$的字符提取到str中*/
      sscanf(s, "%*[^$]$%[^$]", result);
      printf("sscanf_6: %s\n", result);
      /* "hello, world",如果我想仅保留world,那该怎么办呢?(,后面有个空格)*/
      /*其中%*s表示第一个被匹配到的字符串hello,被过滤掉了,如果没有空格,则结果为NULL。
   其实“hello, world”被空格分割成了两个字符串"hello,"和"world".*/
      char str3[]= "hello, world";
      sscanf(str3, "%*s%s", str3 );
      printf("sscanf_str3: %s\n",str3);
}


int main(int argc, const char **argv)
{
     char str1[] = "1234,A,$youare$ alwayslikeaBIRD";
     const char str2[]="like";
     char ch = 'a';

     /*strstr(s1,s2)*/
     StrStr(str1, str2);
     /*strchr(s1, ch)*/
     StrChr(str1, ch);
     
     /*strrchr(s1, ch)    strcpy(s1, s2)*/
     StrrChrAndStrcpy(str1, ch);
     /*sscanf(...)*/
     Sscanf(str1);

     return 0;
}

欢迎留言交流,看完觉得有帮助点个赞吧 !

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值