设为首页 加入收藏

TOP

strlen strcat strcpy strcmp 自己实现
2018-10-21 14:14:05 】 浏览:55
Tags: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\n",strlen(as));
  printf("%ld\n",my_strlen(as));
  printf("%ld\n",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\n", s1);
  char *str = my_strcat(s1,s2);
  printf("strcat after s1 = %s\n", s1);
  printf("strcat after str = %s\n", 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]\n", s1);
  char *str = my_strcpy(s1,s2);
  printf("strcpy after s1 = [%s]\n", s1);
  printf("strcat after str = [%s]\n", 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 != '\0' || *s2 != '\0'){
    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\n");
  }else if(res > 0){
    printf("s1 > s2\n");
  }else{
    printf("s1 < s2\n");
  }
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言/C++对编程学习的重要性! 下一篇第 14 章 结构和其他数据形式(na..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目