当前位置:网站首页>C language simulation to realize character function and memory function
C language simulation to realize character function and memory function
2022-07-20 16:02:00 【Zhu C】
List of articles
One 、 Simulate the implementation of character functions (strlen,strcpy,strcat,strcmp)
(1) Simulation Implementation strlen
#include<stdio.h>
int my_strlen(char* p)
{
int num = 0;
while(*p!='\0')
{
num++;
p++;
}
return num;
}
int main()
{
char arr[] = "abcdef";
int ret = my_strlen(arr);
printf("%d", ret);
return 0;
}
(2) Simulation Implementation strcpy
#include<stdio.h>
#include<assert.h>
void my_strcpy(char* dest,const char* src)
{
assert(dest && src);
while(*dest++=*src++)
{
;
}
}
int main()
{
char arr1[] = "abcddd";
char arr2[10] = {
0 };
my_strcpy(arr2, arr1);
printf("%s\n", arr2);
return 0;
}
(3) Simulation Implementation strcat
char* my_strcat(char* dest,const char*src)
{
char* ret = dest;
while(*dest)
{
dest++;
}
while (*dest++ = *src++)
;
return ret;
}
int main()
{
char arr1[10] = "abcd";
strcat(arr1, "zhu");
printf("%s\n", arr1);
return 0;
}
(4) Simulation Implementation strcmp
int my_strcmp(char* str1,char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
int main()
{
char arr1[] = "abcd";
char arr2[] = "abcd";
int ret = my_strcmp(arr1, arr2);
printf("%d", ret);
return 0;
}
Two 、 Simulate the implementation of memory functions (strstr、memcpy、memmove)
(1) Simulation Implementation strstr
char* my_strstr(const char* str1, const char* str2)
{
assert(str1 && str2);
const char* s1 = str1;
const char* s2 = str2;
const char* p = str1;
while(*p)
{
s1 = p;
s2 = str2;
while(*s1==*s2&&*s1!='\0'&&*s2!='\0')
{
s1++;
s2++;
}
if(*s2=='\0')
{
return p;
}
p++;
}
return NULL;
}
int main()
{
char arr1[] = "zhucheng666";
char arr2[] = "en";
char* ret = my_strstr(arr1, arr2);
printf("%s\n", ret);
return 0;
}
(2) Simulation Implementation memcpy
my_memcpy(void* dest,const void* src,int num)
{
void* ret = dest;
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest+1;
src = (char*)src + 1;
}
return ret;
}
int main()
{
int arr1[] = {
1,2,3,4,5 };
int arr2[10] = {
0 };
my_memcpy(arr2, arr1, 8);
int i = 0;
for (i = 0; i < 2; i++)
printf("%d ",arr2[i]);
return 0;
}
(3) Simulation Implementation memmove
void *my_memmove(void* dest,const void*src,size_t num)
{
assert(dest && src);
void* ret = dest;
if(dest<src)
// front -> after
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
return ret;
}
The above is the implementation principle of the most basic character functions and memory functions , You can learn about , A deep understanding , Only in this way can we make better use of it !
边栏推荐
猜你喜欢
NFT市场格局仍未变化,Okaleido能否掀起新一轮波澜?
技术人如何打响个人品牌?五大顶级KOL独家传授
BI技巧丨同环比计算
Do you still have certificates to participate in the open source community?
获取疫情资讯数据
Ceres robust curve fitting
PLC lislam line face cylinder laser slam
[development of large-scale e-commerce projects] mall business - Search Service - building page environment -47
原来何恺明提出的MAE还是一种数据增强!上交&华为基于MAE提出掩蔽重建数据增强,优于CutMix、Cutout和Mixup!...
广州深入开展经营性自建房安全整治“百日行动” 两个月排查房屋逾两百万栋
随机推荐
juc包下常用工具类
⾦融衍⽣产品是什么?
Omnipeek 抓包工具
Originally, MAE proposed by he Kaiming is still a kind of data enhancement! Based on MAE, Shanghai Communications & Huawei proposes masking reconstruction data enhancement, which is better than cutmix
UVM中uvm_event中带参数的用法
Spark高效数据分析03、Spack SQL
Spark efficient data analysis 03, spark SQL
php 踩坑 数组访问
uniapp通过addInterceptor拦截路由跳转,控制页面是否需要登录
Iterm2安装与使用
What are the products of Rongyan?
Pytorch, initialize tensor
Phase mechanism in UVM
DS(PatterMatchalgorithm)
mysql中update和select结合使用
What you have to know about responsive layout
服务器白名单是什么意思
HotSpot虚拟机的介绍
Ceres解析求导
DS(LineLinkStorStruct)