用C语言模拟实现字符函数与字符串函数 strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat

若使用本文相关代码,还请动手点个赞!!!

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
#include<string.h>
//模拟实现strstr
#if 1  //不使用本段代码时,请将1改为0
char* my_strstr(const char* str1, const char* str2)
{//assert(str1 && str2);char* p1 = str1;char* p2 = str2;while (*str1 != '\0'){while (*str1 == *str2){str1++;str2++;if (*str2 == '\0'){return p1;}}p1 = str1;//str1向后走了一位str2 = p2;//重新开始比较if (*str1 != *str2)//新的str1与str2是否不同{p1=++str1;}}return NULL;
}
int main()
{char arr1[] = "abbcdebbd";char arr2[] = "bc";//bdchar *p=my_strstr(arr1, arr2);printf("%s",p);
}
#endif//模拟实现memcpy
#if 0//将0改为1即可使用本段代码
void* my_memcpy(void* dest, const void* src, size_t count)
{void* p = dest;for (size_t i = 0; i < count; i++){*(((char*)dest) + i) = *(((char*)src) + i);}return p;
}
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9 };//my_memcpy(arr+3, arr, 12);//my_memcpy(arr , arr+3, 12);my_memcpy(arr + 2, arr+1, 12);
}
#endif
//模拟实现memmove
//void *memmove( void *dest, const void *src, size_t count );
#if 0
void* my_memmove(void* dest, const void* src, size_t count)
{void* p = dest;if ((char *)dest > (char *)src)//目标地址大于源地址  从后向前{for (int i = (int)count-1; i >= 0; i--){*(((char*)dest) + i) = *(((char*)src) + i);}return p;}else if ((char*)dest < (char*)src)//目标地址小于源地址从前向后{for (size_t i = 0; i < count ; i++){*(((char*)dest)+i)  = *(((char*)src) + i);}return p;}else//目标地址等于源地址 任意返回一个地址{return dest;}
}
int main()
{   int arr[] = { 1,2,3,4,5,6,7,8,9 };//my_memmove(arr+3, arr, 12);//my_memmove(arr + 3, arr, 12);//my_memmove(arr + 1, arr, 12);//目标地址大于源地址从后向前my_memmove(arr + 3, arr + 4, 12);//目标地址小于源地址从前向后}
#endif
//模拟实现strlen
#if 0
int my_strlen(const char* arr)
{assert(arr);int count = 0;while (*arr){arr++count++;}return count;
}
void test()
{char arr[] = "abcdef";int ret = my_strlen(arr);printf("%d ", ret);
}
int main()
{test();return 0;
}
#endif//模拟实现strcpy
#if 0
char* my_strcpy(char* dest, const char* arr)
{char* p = dest;while (*dest++=*arr++){;}return p;
}
void test()
{char arr[] = "abcdef";char dest[20] = { 0 };printf("arr:%s\n", arr);printf("dest:%s\n", dest);my_strcpy(dest,arr);printf("dest:%s", dest);}
int main()
{test();return 0;
}
#endif
//模拟实现strcmp
#if 0
int my_strcmp(const char* arr, const char* arr1)
{if (strlen(arr) != strlen(arr1)){return strlen(arr) - strlen(arr1);}else {while (*arr == *arr1){if (*arr == '\0'){return 0;}arr++;arr1++;}return (int)(*arr - *arr1);}}
void test()
{char arr [] = "abcdef";char arr1[] = "abcdef";char arr2[] = "abcdefg";char arr3[] = "qcdefg";int ret=my_strcmp(arr, arr1);printf("%d \n", ret);int ret1=my_strcmp(arr, arr2);printf("%d \n", ret1);int ret2 = my_strcmp(arr3, arr);printf("%d \n", ret2);
}
int main()
{test();return 0;
}#endif
模拟实现strcat
#if 0
char* my_strcat(char* dest, const char* sour)
{assert(dest && sour);char* p = dest;char* p1 = sour;while (*dest){dest++;}while (*dest++ = *sour++){;}return p;
}
void test()
{char arr[] = "efgh";char arr1[20] = "abcd";printf("拼接前:%s\n", arr1);my_strcat(arr1, arr);printf("拼接后:%s\n", arr1);printf("拼接后:%s\n", my_strcat(arr1, arr));
}
int main()
{test();return 0;
}#endif

如何用C语言实现各种字符函数和字符串函数strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat相关推荐

  1. C语言库函数的实现(strlen strcpy strcmp strcat strstr)

    库函数的实现 strlen strcpy strcmp strcat strstr assert函数 头文件:assert.h 又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的 ...

  2. 字符串函数实现(strlen,strcpy,strcmp,strcat,strrev)

    声明:以下代码可能并非最佳方法,若有错误疑问欢迎提出!!! strlen函数 #include<stdio.h> #include<string.h>int mylen(cha ...

  3. 用C语言模拟实现字符函数与字符串函数

    用C语言模拟实现字符函数与字符串函数 strncat.strncpy.atoi 若使用本文相关代码,还请动手点个赞!!! #define _CRT_SECURE_NO_WARNINGS 1 #incl ...

  4. c语言中常用的字符函数以及字符串函数

    文章目录 前言 一.常用字符串函数 1.strlen() 2.strcpy() 3.strcat() 4.strcmp() 5.strstr() 6.memcpy() 6.memmove() 二.qs ...

  5. Swift3.0语言教程查找字符集和子字符串

    Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...

  6. 常见的字符函数与字符串函数介绍(1)

    常见的字符函数与字符串函数介绍 前言 C语言中对字符与字符串的处理很是频繁,但是C语言中并没有字符串类型的变量,字符串通常存放在常量字符串或者字符数组中.字符串常量适用于那些对它不做任何修改的字符串函 ...

  7. 字符函数和字符串函数_R中的字符串–函数及其操作

    字符函数和字符串函数 Strings are generally a one-dimensional (1D) arrays that contain single or multiple value ...

  8. C语言函数: 字符串函数及模拟实现strtok()、strstr()、strerror()

    C语言函数: 字符串函数及模拟实现strtok().strstr().strerror() strstr()函数: 作用:字符串查找.在一串字符串中,查找另一串字符串是否存在. 形参: str2在st ...

  9. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

最新文章

  1. MIT“人造肌肉”登上Science封面,能提起自重650倍的物体,伸缩10000次都不坏
  2. Python——常用模块
  3. php用get方式传json数据 变成null了
  4. leetcode206. 反转链表
  5. wso2 esb_通过运行示例从WSO2 ESB开始
  6. sublimText3在ubuntu下的中文支持
  7. Author Topic Model[ATM理解及公式推导]
  8. TextBoxWatermarkExtender扩展器与RequiredFieldValidator控件相冲突的解决方案
  9. linux cpu intr s,mpstat命令(linux cpu监控工具)
  10. Jquery插件之ajaxForm ajaxSubmit的理解用法
  11. 20.变量及数据类型
  12. Nginx的静态文件合并请求,加快网站的加载速度
  13. 大数据技术与应用解读及案例分析(PPT)
  14. Flutter更改主题颜色报错:type ‘Color‘ is not a subtype of type ‘MaterialColor‘
  15. kiv8测量方法_理邦elite V8 病人监护仪
  16. android 屏幕比例,16:10还是4:3?纵论安卓平板最佳屏幕比例
  17. WIN10-NVME硬盘-无U盘安装-Ubuntu22.04-双系统(非虚拟机)
  18. Camera和Image sensor技术基础笔记(1) -- 光和CCD/CMOS sensor基础知识
  19. 使用html+css实现一个静态页面——我的家乡-杭州(7页) HTML+CSS+JavaScript 大学生家乡网页作品 老家网页设计作业模板 学生网页制作源代码下载
  20. 风控中的文本相似方法之余弦定理

热门文章

  1. linux imx6 书籍,迅为iMX6开发板-Linux系统-TFTP使用文档
  2. MacOS使用homebrew安装OpenCV及遇到的坑
  3. 保护大数据的基本原理
  4. Xilinx_Vivado_SDK安装过程中可能遇到的问题和解决方法
  5. c++单链表逆置内存结构分析
  6. 不要和一种编程语言厮守终生:为工作正确选择
  7. 卓克-为什么现在cpu核心越来越多?
  8. Python 详解箱型图法剔除异常值
  9. java查询结果传入excel表格批量上传并压缩下载
  10. 南开bbs——看完了就不会有人再感慨奶粉事件了...