IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C语言】strcpy等string函数和memcpy等memory函数的实现,经典方法 -> 正文阅读

[C++知识库]【C语言】strcpy等string函数和memcpy等memory函数的实现,经典方法

Ⅰ. string类函数

1.strcpy()

strcpycpp中是如何定义的?
在这里插入图片描述
作用:将source中的字符串内容拷贝到destination中去,但是对source中的字符串不造成影响;

my_strcpy的实现:

char* my_strcpy(char* e1, const char* e2)
{
	char* tmp = e1;
	while (*e1++ = *e2++)
	{
		;
	}
	return tmp;
}

2.strlen()

strlen()cpp中如何定义的?
在这里插入图片描述
作用:由此可见,strlen是返回一个字符串长度的函数;

my_strlen的实现:

int my_strlen(char* arr)
{
	int sz = 0;
	while (*arr++ != '\0')
	{
		sz++;
	}
	return sz;
}

3.strcmp()

strcmpcpp中是如何定义的?
在这里插入图片描述
在这里插入图片描述
作用:比较两个字符串第一个不同字符的ASCII码差值,并返回其差值;

my_strcmp 的实现:

int my_strcmp(const char* e1, const char* e2)
{
	assert(e1 && e2);
	while (*e1 == *e2)//如果相等,进入下面操作
	{
		if (*e1 == '\0')//如果相等且都为'\0',说明字符串相等
		{
			return 0;
		}
		e1++;//否则加加
		e2++;
	}
	return *e1 - *e2;//不相等,返回差值
}

4.strcat()

strcatcpp中是如何定义的?
在这里插入图片描述
作用:连接两个字符串,并返回destination字符串的首地址;

#include<assert.h>
char* my_strcat(char* e1, const char* e2)
{
	assert(e2);
	char* tmp = e1;
	while (*e1 != '\0')
	{
		e1++;
	}
	while (*e1 = *e2)
	{
		e1++;
		e2++;
	}
	return tmp;
}

5.strstr()

strstr()cpp中是如何定义的?
在这里插入图片描述
作用:判断字符串A是否是字符串B的子集,如果是,则返回B中子集的字符串首地址;如果不是,返回空字符串NULL。
my_strstr的实现:

char* my_strstr(const char* e1,const char* e2)
{
	const char* s1 = e1;
	const char *s2 = e2;
	const char* p = e1;
	while(*p)
	{
		s1 = p;
		s2 = e2;
		while(*s1!='\0'&&*s2!='\0'&&*s1==*s2)
		{
			s1++;
			s2++;
		}
		if(*s2=='\0')
		{
			return p;
		}
		p++;
	}
{

6.strtok()

strtok 在cpp中是如何定义的?
在这里插入图片描述
作用:就是把一个字符串通过指定的字符断开,返回被切割出的字符串首地址,其次如果继续切割,则要调用空字符串和指定字符;
比如:
在这里插入图片描述
这个不要求学会自我实现;

7.strerror()

strerror 在cpp中是如何定义的?
在这里插入图片描述
作用:通过错误码的代数打印出错误信息。
比如:
在这里插入图片描述

Ⅱ.memory类函数

1.memcpy()

memcpy 在cpp中是如何定义的?
在这里插入图片描述
作用:把源字符串的内容拷贝到目标字符串中,对源字符串的内容不造成影响;
my_memcpy 的实现:

#include<stdio.h>
#include<assert.h>
void* my_memcpy(void* dest, const void* sour, size_t num)
{
	assert(dest && sour);
	if (dest > sour)//从前往后
	{
		while (num--)
		{
			*(char*)dest = *(char*)sour;
			dest = (char*)dest + 1;
			sour = (char*)sour + 1;
		}
	}
	else//从后往前
	{
		while (num--)
		{
			*((char*)dest + num) = *((char*)sour + num);
		}
	}
}

2.memmove()

memmove 在cpp中是如何定义的?
在这里插入图片描述
作用:是一般化的memcpy。
my_memmove 的实现:同memcpy;

3.memset()

memset 在cpp中是如何定义的?
在这里插入图片描述
作用:对目标内存进行操作,修改为源内容,以字节为单位;

Ⅲ.Ctype类函数

在这里插入图片描述

朋友,你也不想你的博客被白嫖吧?
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:38:18  更:2022-09-24 20:41:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 14:06:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码