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
    ");
      }
    }
    
  • 相关阅读:
    NSSM 将jar 安装成windows服务
    Spark Streaming
    记录一次oracle的坑 ORA08103
    POJ 3669 Meteor Shower
    LeetCode题目1~3
    POJ 3723 Conscription 并查集 + Kruskal
    LeetCode题目4:Sort List
    C++实现的快速排序
    C++实现的一段希尔排序代码
    2014大众点评Hackathon参赛感想
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9175482.html
Copyright © 2011-2022 走看看