• 转:strcat与strcpy与strcmp与strlen


    转自:http://blog.chinaunix.net/uid-24194439-id-90782.html

    strcat

      原型:extern char *strcat(char *dest,char *src);
     
      用法:#include <string.h>
     
      功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'')并添加''。
     
      说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
     
      返回指向dest的指针。
     
      举例:
     
      // strcat.c
     
      #include <syslib.h>
     
      #include <string.h>
     
      main()
     
      {
     
      char d[20]="Golden Global";
     
      char *s=" View";
     
      clrscr();
     
      strcat(d,s);
     
      printf("%s",d);
     
      getchar();
     
      return 0;
     
      }
     
      程序执行结果为:
     

      Golden Global View

    strcpy

    strcpy

     
    原型声明:extern char *strcpy(char *dest,char *src);
     
      头文件:string.h
     
      功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
     
      说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
     
      返回指向dest的指针。 
     

    典型实现

      /**********************
     
      * C语言标准库函数strcpy的一种典型的工业级的最简实现
     
      * 返回值:
     
      * 返回目标串的地址。
     
      * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
     
      * 参数:
     
      * strDeatination
     
      *          目标串
     
      * strSource
     
      * 源串
     
      ***********************/
     
      char *strcpy(char *strDestination, const char *strSource);
     
      {
     
      assert(strDestination && strSource);
     
      while(*strDestination++ = *strSource++); 
     
      return strDestination;
     
      }

    strcmp

      原型:extern int strcmp(char *s1,char * s2);
     
      用法:#include <string.h>
     
      功能:比较字符串s1和s2。
     
      说明:
     
      当s1<s2时,返回值<0
     
      当s1=s2时,返回值=0
     
      当s1>s2时,返回值>0
     
      即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇''为止。如:
     
      "A"<"B" "a">"A" "computer">"compare"
     
      举例:
     
      // strcmp.c
     
      #include <syslib.h>
     
      #include <string.h>
     
      int main()
     
      {
     
      char *s1="Hello, Programmers!";
     
      char *s2="Hello, programmers!";
     
      int r;
     
      clrscr();
     
      r=strcmp(s1,s2);
     
      if(!r)
     
      printf("s1 and s2 are identical");
     
      else
     
      if(r<0)
     
      printf("s1 less than s2");
     
      else
     
      printf("s1 greater than s2");
     
      getchar();
     
      return 0;
     

      }

    strlen

      原型:extern unsigned int strlen(char *s);
     
      用法:#include <string.h>
     
      功能:计算字符串s的(unsigned int型)长度
     
      说明:返回s的长度,不包括结束符NULL。
     
      举例
     
      // strlen.c
     
      #include <syslib.h>
     
      #include <string.h>
     
      main()
     
      {
     
      char *s="Golden Global View";
     
      clrscr();
     
      printf("%s has %d chars",s,strlen(s));
     
      getchar();
     
      return 0;
     
      }
     
      下面给大家提供几种实现strlen函数的源代码,供大家参考:
     
      -------------------------------------------------1:start------------------------------------
     
      #include <stdio.h>
     
      #include <assert.h>
     
      typedef unsigned int u_int;
     
      u_int Mystrlen(const char *str)
     
      {
     
      u_int i;
     
      assert(str != NULL);
     
      for (i = 0; str != ''; i++);
     
      return i;
     
      }
     
      ------------------------------------------------1:end--------------------------------------
     
      -------------------------------------------------2:start--------------------------------------
     
      int strlen(const char *str) 
     
      { 
     
      assert(str != NULL); 
     
      int len = 0; 
     
      while((*str++) != '') 
     
      len++; 
     
      return len; 
     
      }http://baike.baidu.com/edit/id=736226
     
      ------------------------------------------------2:end ------------------------------------------
     
      ------------------------------------------------3:start------------------------------------------
     
      int strlen(const char *str) 
     
      { 
     
      assert(str); 
     
      const char *p = str; 
     
      while(*p++!=NULL); 
     
      return p - str - 1; 
     
      }
     
      -------------------------------------------------4:end-----------------------------------------
     
      -------------------------------------------------5:start----------------------------------------
     
      int strlen(const char *str) 
     
      { 
     
      assert(str); 
     
      const char *p = str; 
     
      while(*p++); 
     
      return p - str - 1; 
     
      }
     
      -----------------------------------------------6:end----------------------------------------
     
      简单的总结一下:
     
      以上各种实现的方式都是大同小异的,有的用的是变量,有的用的是指针。
     
      其中,最后一个用的是递归的方式。其实,在实现库函数的时候,是规定不可以
     
      调用其他的库函数的,这里只是给大家一个方法,不用变量就可以实现strlen。
  • 相关阅读:
    树莓派4B 多屏 QT程序窗口全屏 QScreen 只能获取1个屏幕
    树莓派4B 微雪7寸触摸屏 双屏 触摸屏校正
    虚拟机 ubuntu18 树莓派4 QT5.14.2 交叉编译
    Qt 指定 so库 运行时路径
    building qtqml requires python
    python django 测试报告 发送邮件
    jmeter XPath Extractor
    python+unittest+HTMLTestRunner生成测试报告
    Genymotion、 uiautomatorviewer、 appium报错
    jmeter forEach控制器
  • 原文地址:https://www.cnblogs.com/kira2will/p/4015386.html
Copyright © 2020-2023  润新知