当前位置:网站首页>库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
库函数的模拟实现(strlen)(strcpy)(strcat)(strcmp)(strstr)(memcpy)(memmove)(C语言)(VS)
2022-08-01 12:10:00 【星尘不会落】
文章目录
前言
这是我对库函数的模拟实现,希望对大家有帮助。
一、模拟实现strlen

#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str);
int tmp = 0;
while (*str)
{
tmp++;
str++;
}
if (!tmp)
return NULL;
return tmp;
}
二、模拟实现strcpy

char* my_strcpy(char* strDestination, const char* strSource)
{
assert(strDestination&& strSource);
char* tmp_strDestination = strDestination;
while (*strDestination++ = *strSource++);
return tmp_strDestination;
}
三、模拟实现strcat

#include<stdio.h>
#include<assert.h>
char* my_strcat(char* strDestination, const char* strSource)
{
assert(strDestination&& strSource);
char* tmp_strDestination = strDestination;
while (*strDestination++);
strDestination--;
while (*strDestination++ = *strSource++);
return tmp_strDestination;
}
四、模拟实现strcmp

#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* string1, const char* string2)
{
assert(string1 && string2);
for (;;string1++, string2++)
{
if (*string1 == *string2 && *string2 == '\0')
return 0;
else if (*string1 == '\0' || *string1 < *string2)
return -1;
else if(*string2 == '\0' || *string1 > *string2)
return 1;
}
}
五、模拟实现strstr

#include<stdio.h>
#include<assert.h>
char* my_strstr(const char* string, const char* strCharSet)
{
assert(string && strCharSet);
char* tmp_string = (char*)string;
do
if (*tmp_string == *strCharSet)
return tmp_string;
while (*tmp_string++);
return NULL;
}
六、模拟实现memcpy

#include<stdio.h>
#include<assert.h>
void* my_memcpy(void* dest, const void* src, size_t count)
{
assert(dest && src);
char* tmp_dest = dest;
while (count--)
*((char*)dest)++ = *((char*)src)++;
return tmp_dest;
}
七、模拟实现memmove

#include<stdio.h>
#include<assert.h>
void* my_memmove(void* dest, const void* src, size_t count)
{
assert(dest && src);
void* tmp_dest = dest;
if (dest < src)
while (count--)
*((char*)dest)++ = *((char*)src)++;
else
while (count--)
*((char*)dest + count) = *((char*)src + count);
return dest;
}
七、看完记得给个三连,谢谢
边栏推荐
- 如何将第三方服务中心注册集成到 Istio ?
- Programmer's self-cultivation
- MarkDown公式指导手册
- Promise learning (4) The ultimate solution for asynchronous programming async + await: write asynchronous code in a synchronous way
- 初级必备:单例模式的7个问题
- [CLion] CLion always prompts "This file does not belong to any project target xxx" solution
- Aeraki Mesh became CNCF sandbox project
- 大中型网站列表页翻页过多怎么优化?
- Favorites|Mechanical Engineer Interview Frequently Asked Questions
- What is MNIST (what does plist mean)
猜你喜欢

mysql进阶(二十二)MySQL错误之Incorrect string value中文字符输入错误问题分析

STM32 CAN过滤器配置详解

收藏|机械工程师面试常问问题

Data frame and remote frame of CAN communication

【likeshop】回收租凭系统100%开源无加密 商城+回收+租赁

MarkDown公式指导手册

Process sibling data into tree data

CloudCompare&PCL ICP配准(点到面)

Find objects with the same property value Cumulative number Summarize

判断JS数据类型的四种方法
随机推荐
CloudCompare&PCL ICP配准(点到面)
蔚来又一新品牌披露:产品价格低于20万
轮询和长轮询的区别
一文带你读懂云原生、微服务与高可用
R language ggplot2 visualization: use ggpubr package ggscatter function visualization scatterplot, use xscale wasn't entirely specified X axis measurement adjustment function, set the X coordinate for
Beyond Compare 4 试用期到期
Istio Meetup China: Full Stack Service Mesh - Aeraki Helps You Manage Any Layer 7 Traffic in an Istio Service Mesh
How to use DevExpress controls to draw flowcharts?After reading this article, you will understand!
[Community Star Selection] Issue 24 August Update Plan | Keep writing, refuse to lie down!More original incentive packages, as well as Huawei WATCH FIT watches!
Programmer's self-cultivation
字体反爬之好租
R语言拟合ARIMA模型:使用forecast包中的auto.arima函数自动搜索最佳参数组合、模型阶数(p,d,q)、设置seasonal参数指定在模型中是否包含季节信息
markdown常用数学符号cov(markdown求和符号)
OpenHarmony高校技术俱乐部计划发布
win10系统重装,无法登录进行同步的情况下chrome数据恢复
【面试高频题】难度 1.5/5,二分经典运用题
实现集中式身份认证管理的案例
Detailed explanation of table join
小程序插件如何帮助开发者受益?
Aeraki Mesh 加入 CNCF 云原生全景图













