zoukankan      html  css  js  c++  java
  • strlen strcat strcpy strcmp 自己实现

    strlen strcat strcpy strcmp 自己实现

    strlen

    include <stdio.h>
    #include <string.h>
    #include <assert.h>
    
    size_t my_strlen(const char* str){
      assert(str != NULL);
    
      const char *tmp = str;
    
      size_t count = 0;
      while(*tmp++ != ''){
        count++;
      }
      return count;
    }
    
    size_t my_strlen1(const char* str){
      assert(str != NULL);
      if(*str == 0){
        return 0;
      }else{
        return my_strlen1(str+1) + 1;
      }
    }
    int main(){
      char as[] = "hello C";
      printf("%ld
    ",strlen(as));
      printf("%ld
    ",my_strlen(as));
      printf("%ld
    ",my_strlen1(as));
    }
    

    strcat

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    #include <malloc.h>
    
    char* my_strcat(char* strd, const char* strs){
      assert(strd != NULL && strs != NULL);
      char *tmp = strd;
      while(*tmp++ != 0){}
      tmp--;
      while(*strs != 0){
        *(tmp++) = *strs++;
      }
      *tmp = '';
      return strd;
    }
    
    int main(){
      char s1[20] = "hello";
      char s2[] = " C";
      printf("strcat before s1 = %s
    ", s1);
      char *str = my_strcat(s1,s2);
      printf("strcat after s1 = %s
    ", s1);
      printf("strcat after str = %s
    ", str);
    }
    
    

    strcpy

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    #include <malloc.h>
    
    char* my_strcpy(char* strd, const char* strs){
      assert(NULL != strd && NULL != strs);
      char* tmp = strd;
      while(*strs != ''){
        *tmp++ = *strs++;
      }
      *tmp = '';
      return strd;
    }
    int main(){
      char s1[20] = "hello";
      char s2[] = " wod";
      printf("strcpy before s1 = [%s]
    ", s1);
      char *str = my_strcpy(s1,s2);
      printf("strcpy after s1 = [%s]
    ", s1);
      printf("strcat after str = [%s]
    ", str);
    }
    
    

    strcmp

    #include <stdio.h>
    #include <string.h>
    #include <assert.h>
    #include <malloc.h>
    
    int my_strcmp(const char *s1, const char *s2){
    
      assert(NULL != s1 && NULL != s2);
      int res = 0;
      while(*s1 != '' || *s2 != ''){
        if(*s1 > *s2){
          res = 1;
          break;
        }else if(*s1 < *s2){
          res = -1;
          break;
        }else{
          s1++;
          s2++;
        }
      }
      return res;
    }
    
    int main(){
      char *s1 = "a1123";
      char *s2 = "a1123";
      int res = my_strcmp(s1, s2);
      if(res == 0){
        printf("s1 == s2
    ");
      }else if(res > 0){
        printf("s1 > s2
    ");
      }else{
        printf("s1 < s2
    ");
      }
    }
    
  • 相关阅读:
    浅析七种经典排序算法
    一个可编辑与新增博客园文章的 Python 脚本
    快速排序的几种实现方式
    如何查找某个网站的(如:有道云笔记)的接口
    一键导出「有道云笔记」所有笔记
    2020年启蒙及小学识字练字APP或小程序测评榜
    2020年部编版小学二年级语文上册知识点(完整版)
    2020年部编人教版小学语文一年级下册知识点汇总
    换个角度,程序员爸爸应该关注一下
    计算机基础知识-I/O篇
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9175482.html
Copyright © 2011-2022 走看看