strlen strcat strcpy strcmp 自己实现

Posted xiaoshiwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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++ != ‘0‘){
    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 = ‘0‘;
  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 != ‘0‘){
    *tmp++ = *strs++;
  }
  *tmp = ‘0‘;
  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);
}

以上是关于strlen strcat strcpy strcmp 自己实现的主要内容,如果未能解决你的问题,请参考以下文章

strlen() strcpy() strcat() strcmp()实现

strlen strcat strcpy strcmp 自己实现

strlen sizeof strcat strcpy区别

常用函数strcpy strcat strcmp strlen memcpy memset

C深度剖析自实现 strcmp strlen strcpy strcat

C语言中strcat和strcpy的区别