模拟实现字符函数和字符串函数(一)

embedded/2024/10/11 0:30:39/

目录

一、模拟实现strlen

二、模拟实现strcpy

三、模拟实现strcmp

四、模拟实现strcat

五、模拟实现strstr

  • 模拟实现strlen
  • 模拟实现strcpy
  • 模拟实现strcmp
  • 模拟实现strcat
  • 模拟实现strstr

一、模拟实现strlen

  • strlen函数是用来求字符串长度的函数

#include <stdio.h>int my_strlen(const char* str)
{char* sp = str;while (*sp){sp++;}return sp-str;
}int main()
{char arr[] = "hello";int ch = my_strlen(arr);printf("%d\n", ch);return 0;
}

二、模拟实现strcpy

  • strcpy是用来实现字符串拷贝的
#include <stdio.h>
#include <assert.h>char* my_strcpy(char* str1, const char* str2)
{assert(str1 && str2);char* cp = str1;while (*str2){*str1 = *str2;str1++;str2++;}return cp;
}int main()
{char arr1[20] = {0};char arr2[] = "hello world";my_strcpy(arr1, arr2);printf("%s\n", arr1);printf("%s\n", arr2);return 0;
}

三、模拟实现strcmp

  • strcmp是用来实现比较两个字符串大小的函数
#include <stdio.h>
#include <assert.h>int my_strcmp(const char* str1, const char* str2)
{assert(str1, str2);while (*str1 == *str2){if (*str1 == '\0'){return 0;}str1++;str2++;}return *str1 - *str2;
}int main()
{char arr1[] = "abcdef";char arr2[] = "abzd";//比较两个字符串大小int ch = my_strcmp(arr1, arr2);if (ch < 0){printf("arr1小于arr2\n");}else if (ch == 0){printf("arr1等于arr2\n");}elseprintf("arr1大于arr2\n");return 0;
}

四、模拟实现strcat

  • strcat是实现在一个字符串后追加一个字符串的函数
#include <stdio.h>char* my_strcat(char* str1, const char* str2)
{char* cp = str1;while (*str1){str1++;}while (*str2){*str1 = *str2;str1++;str2++;}return cp;
}int main()
{char arr1[20] = "hello ";char arr2[] = "world!";my_strcat(arr1, arr2);printf("%s\n", arr1);return 0;
}

五、模拟实现strstr

  • strstr是用来实现字符串查找的
#include <stdio.h>char* my_strstr(const char* str1, const char* str2)
{char* s1 = str1;char* s2 = str2;char* cp = str1;while (*cp){s1 = cp;s2 = str2;while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2){s1++;s2++;}if (*s2 == '\0'){return cp;}elsecp++;}return NULL;
}int main()
{char arr1[20] = "abbbcdef";char arr2[20] = "bbc";char* ch = my_strstr(arr1, arr2);printf("%s", ch);return 0;
}


http://www.ppmy.cn/embedded/125623.html

相关文章

输出平方矩阵

题目&#xff1a; 输入一个正整数n&#xff0c;输出一个n阶的平方矩阵。 例如&#xff1a; 输入&#xff1a;5 输出&#xff1a; 1 4 9 16 25 4 9 16 25 1 9 16 25 1 4 16 25 1 4 9 25 1 4 9 16 解题思路&#xff1a; 本题我分别采用一维数组和二维数组来实现。 一…

抖店API接口系列(商品详情数据),Json数据格式参考

抖店API接口系列中的商品详情数据接口允许第三方应用通过编程方式访问抖音小店的商品数据。这些数据通常包括商品的基本信息、价格、库存、用户评价等&#xff0c;并且会以JSON数据格式返回。以下是一个抖店商品详情数据JSON格式的参考示例&#xff1a; { "status":…

【优选算法之BFS】No.16---多源BFS和BFS解决拓扑排序

文章目录 前言一、多源BFS示例&#xff1a;1.1 01 矩阵1.2 ⻜地的数量1.3 地图中的最⾼点1.4 地图分析 二、BFS解决拓扑排序&#xff1a;2.1 拓扑排序简介2.1.1 有向无环图(DAG图)2.1.2 AVO网&#xff1a;顶点活动图2.1.3 拓扑排序2.1.4 实现拓扑排序 2.2 BFS解决拓扑排序示例&…

AAA Mysql与redis的主从复制原理

一 &#xff1a;Mysql主从复制 重要的两个日志文件&#xff1a;bin log 和 relay log bin log&#xff1a;二进制日志&#xff08;binnary log&#xff09;以事件形式记录了对MySQL数据库执行更改的所有操作。 relay log&#xff1a;用来保存从节点I/O线程接受的bin log日志…

髓质脊髓三叉神经核文献阅读笔记

文献阅读 1.RNA-seq 对于大量RNA测序&#xff0c;收集第30天的类器官。使用FastPure细胞/组织总RNA分离试剂盒根据制造商的方案提取总RNA。采用Nanodrop 2000分光光度计测定RNA浓度和纯度。使用Agilent 2100生物分析仪和2100 RNA纳米6000检测试剂盒评估RNA样品的完整性。简单…

面试--开源框架面试题集合

Spring 谈谈自己对于 Spring IoC 的了解什么是 IoC?IoC 解决了什么问题?什么是 Spring Bean&#xff1f;将一个类声明为 Bean 的注解有哪些?Component 和 Bean 的区别是什么&#xff1f;注入 Bean 的注解有哪些&#xff1f;Autowired 和 Resource 的区别是什么&#xff1f;…

EcoVadis认证内容有哪些?EcoVadis认证申请流程?

EcoVadis认证是一个国际性的可持续发展评估平台&#xff0c;旨在帮助全球企业和供应链评鉴其在环境、社会和治理&#xff08;ESG&#xff09;方面的表现。该认证框架由法国的检验、认证和检测机构必维集团&#xff08;Bureau Veritas&#xff09;创建&#xff0c;得到了众多跨国…

【STM32单片机_(HAL库)】4-5-3【定时器TIM】【感应开关盖垃圾桶项目】项目实现

1.项目需求 以下几个事件触发时&#xff0c;垃圾桶自动开盖&#xff0c;并伴随蜂鸣器短响一声&#xff0c;同时 LED 灯闪烁一下&#xff0c;2秒后自动关盖&#xff1a; 检测到有人靠近检测到有震动按下按键 KEY1 2.硬件 STM32单片机最小系统震动传感器模块蜂鸣器模块&#…