• 字符串函数构析


    字符串函数构析

    今日参加了一场笔试,刚好程序题问到一道strcpy函数构建,刚好之前看过字符串函数,同时网上文章大部分都是介绍了下函数的用法,缺少了函数的实现,今日就来自己构析下常见的字符串函数,字符串函数位于标准库的头文件string.h中,在使用函数时需引用该文件

    strlen

    • 函数原型:size_t strlen(const char *s)
    • 函数功能:返回s的字符串函数(不包含结尾的0)
    • 函数构析:
      •  size_t strlen(const char *s)    /*size_t在不同架构下分别代表                              unsigned int和 unsigned long*/
         {
          int idx = 0;
          while(s[idx]!='')
          {
          idx++;
          }
          return idx;
         }

    strcmp

    • 函数原型:int mycmp(const char *s1,const char *s2)
    • 函数功能:比较两字符串,返回值为三种结果(以ascii码表对比)
      • 0:s1==s2

      • 正数:s1>s2

      • 负数:s1<s2

    • 函数构析:
       int mycmp(char *s1,const char *s2)
       {
        while(*s1 == *s2 && *s1 != '')
        {
        s1++;
        s2++;
        }
       
        return *s1 - *s2;
        }

       

    strcpy

    • 函数原型:char *strcpy(char *dst,const char * src)
    • 函数功能:返回s的字符串函数(不包含结尾的0)
    • 函数构析:
       char *mycpy(char *dst,const char *src)
       {
        char *rest = dst;
        while(*dst++ = *src++);
       
        *dst='';
        return rest;
        }

       

    strcat

    • 函数原型:char *mycat(char *dst,const char * src)

    • 函数功能:返回s的字符串函数(不包含结尾的0)
    • 函数构析:
       char *mycat(char *s1,const char *s2)
       {
        char *rest = s1;
        s1 = s1 + strlen(s1);
        while(*s1++ = *s2++);
       
        return rest;
       }

       

     


     

     

     

  • 相关阅读:
    COGS 577 蝗灾 线段树+CDQ分治
    BZOJ 1305 二分+网络流
    BZOJ 1066 Dinic
    BZOJ 3544 treap (set)
    BZOJ 3940 AC自动机
    BZOJ 1503 treap
    BZOJ 3172 AC自动机
    BZOJ 2553 AC自动机+矩阵快速幂 (神题)
    BZOJ1901 ZOJ2112 线段树+treap (线段树套线段树)
    BZOJ 3196 线段树套平衡树
  • 原文地址:https://www.cnblogs.com/Mr-Peng/p/11684817.html
Copyright © 2020-2023  润新知