字符函数,内存操作函数的使用方法以及模拟使用

发布于:2023-01-19 ⋅ 阅读:(300) ⋅ 点赞:(0)

本文我们将学习字符函数与内存操作函数,重点是自己编辑一个函数来实现相关功能,以提高自身的编辑思维与能力

目录

strlen

strcpy 和 strnpcy

strcat 和 strncat

strcmp 和 strcmp

strstr

strtok

strerror

memcpy

memmove

memset

memcmp

strlen函数

首先让我们了解strlen函数的功能, 测量一个字符串的长度。

#include<stdio.h>
int main()
{
	char a[20] = "dadadada";
	int an=strlen(a);
	printf("%d\n", an);
	return 0;
}

我们可以看见a中的“dadadada”是八个字符,理所当然用strlen测量的长度也应该是8,让我们来看一下测试结果

  接下来让我们来模拟实现strlen函数

 

strcpy 和 strnpcy

strcpy函数的功能

 将source内的字符串拷贝到destination内

 图示代码将a2中的内容拷贝到a1中,再将a1打印

出来,a1中的内容不再是Hello而是World;

接下来让我们模拟strcpy函数的实现

原理很简单,将a2的值一次一次的赋给a1即可。

strncpy呢,是有字符串长度限制的strcpy 

strncpy(arr1,arr2,20);

后面的size_t num 是对长度限制 使用方法与strcpy相同

strcat 和 strncat

strcat函数的功能,将source中的字符串加在destination后面;

 接下来让我们模拟strcat函数的实现

 对p1进行循环查找直到找到'\0';再将p2内容逐一赋值过去即可;

strncat 与strncpy 同理,大家可以自行了解

strcmp 和 strcmp

strcmp是我们常用的一个函数,比较两个字符串长度的大小

 

让我们先看一下strcmp的使用效果

strcmp返回值类型为整形分别为大于0,等于0,小于0。代表着a1>a2,a1=a2,a1<a2;

接下来让我们模拟实现strcmp

strstr

 strstr函数功能是查找子字符串

 

 strstr将子字符串找出来并将其打印出来,strstr返回类型是一个char* 的指针,如果找不到会返回一个空指针。

模拟实现strstr

strtok

 strtok函数功能为分割字符串

#include<stdio.h>
#include<string.h>
int main()
{
	const char* sep = "@.";
	char email[] = "zhangpengwei@bitejiuyeke.com.net";
	char cp[40] = { 0 };//"zhangpengwei@bitejiuyeke.com"
	strcpy(cp, email);
	char* ret = NULL;
	for (ret = strtok(cp, sep); 
		 ret != NULL;
 		 ret=strtok(NULL, sep))
	{
		printf("%s\n", ret);
	}

strerror

strerror函数功能为报告错误信息

需要包含<errno.h>

printf("%s",strerror(errno));

 一般情况下,这样可以很好的了解自己出错的原因,快速修改代码

memcpy

与strcpy相同的是,memcpy也是把arr2内容拷贝到arr1里面去,但不同的是memcpy拷贝的数据不仅仅只是字符,各种类型数据均可用memcpy实现。

 

 接下来模拟memcpy的实现

 

与strcpy模拟函数 大同小异 大家可自习研究

memmove

memmove的功能也同样是实现数据的拷贝,与memmove不同的是,它可以在一块空间内进行操作,而memcpy不能在一块空间操作,需要两块独立的空间。

 

这里的可以改造成 

memmove(arr1+3,arr1,20); 

其余的与memcpy同理

模拟实现memmove

 

memset

  memset函数功能将数据初始化,全部干为0

 

memcmp

同理,全部数据类型均可用来比较大小

 


网站公告

今日签到

点亮在社区的每一天
去签到