字符串函数!!!

模拟寻找字符串

#include <assert.h>
const char* S_strstr(const char* arr1, const char* arr2)
{
    
    const char* cp;
    const char* s1;
    const char* s2;

    assert(arr1 && arr2);
    
    cp = arr1;
    while (*cp)
    {
        //开始匹配
        s1 = cp;
        s2 = arr2;
        //匹配两个字符串
        while (*s1 && *s2 && *s1 == *s2)
        {
            s1++;
            s2++;
        }
        //当匹配完后碰到字符串中最后自带的'\0'后就返回
        if (*s2 == '\0')
            return cp;
        //重置起始位置
        cp++;
    }
    return NULL;
}

实现strtok字符串分割函数

strtok 是 C 标准库中的一个字符串分割函数,位于 <string.h> 头文件中。其作用是根据指定的分隔符(delimiters)将字符串拆分为多个子串(tokens)。

#include <string.h>

int main()
{
	char arr[] = "lningkang@cql.tjl@yj.lqx";
	char buf[200] = { 0 };

	strcpy(buf, arr);
	
	char* p = "@.";
	char* s = NULL;
	for (s = strtok(arr, p); s != NULL; s = strtok(NULL, p))
		printf("%s\n", s);
	return 0;
}

实现strerror

strerror 是一个 C 标准库函数,用于将错误码(通常存储在 errno 中)转换为对应的错误描述字符串。该函数属于 <string.h> 头文件,常用于调试和错误处理。

#include <string.h>
#include <errno.h>
/*
如果打开文件不成功,原因一:说明在该目录文件下没有此文件
				 原因二:在原因一的基础上没有打开文件扩展名
*/
int main()
{
	FILE* pf = fopen("add.txt", "r");
	if (pf == NULL)
	{
		printf("打开文件失败,原因是:%s\n", strerror(errno));
		return 1;
	}
	else
		printf("打开文件成功\n");
	return 0;
}

实现memcpy

memcpy 是 C 和 C++ 标准库中的一个函数,用于将一段内存内容从源地址复制到目标地址。它是高性能内存操作的常用工具,常用于数组、结构体等数据的快速拷贝。

#include <string.h>
int main()
{
	int arr[10] = { 0 };
	int arr1[] = { 1,2,3,4,5 };
	memcpy(arr, arr1, 20);
	int i = 0;
	for (i = 0; i < 10; i++)
		printf("%d ", arr[i]);
	return 0;
}

模拟实现memcpy

#include<assert.h>
void* M_memcpy(void* str1, void* str2, size_t sz)
{
	assert(str1 && str2);
	//str2的内存一个一个搬运到str1中即可实现拷贝
	while (sz)
	{
		*(char*)str1 = *(char*)str2;
		str1 = (char*)str1 + 1;
		str2 = (char*)str2 + 1;
		sz--;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值