strstr字符函数的模拟实现

C语言中经常要对字符和字符串进行处理,但是在C语言中没有专门的字符类型,一般将字符或者字符函数存储在常量字符串或者字符数组中,字符串常量适合存储那些不修改的字符串函数,我们知道在C语言中最小的一个单位是一个bit,而字符的最小单位是8个bit称为一个字节,因此字符的最小单位为字节。我们同过模拟查找一个字符数组是否是另一个字符数组的子串(strstr)函数来学习字符函数,即字符串str[30]=“abfbfgde”, arr=“bfgde”,若arr是str的子字符串则返回str中bfgde的b的首地址不是则返回null(空地址)。

strstr模拟实现的代码:

#include<stdio.h>
#include<string.h>
#include<assert.h>

char* my_strstr(const char* str1, const char* str2)
{
	assert(str1&&str2);
	char* cp = (char*)str1;
	char* substr = (char*)str2;
	char* s1 = NULL;

	if (str2 == '\0')
		return NULL;

	while (*cp)
	{
		s1 = cp;
		substr = (char*)str2;

		while((*s1)&&(*str2) && (*s1 == *substr))
		{
			s1++;
			substr++;
		}

		if (*substr == '\0')
			return cp;
		cp++;
	}

	return NULL;
}

int main()
{
	char str[60] = "abfbfgde";
	char arr[] = "bfgd";
	char* temp = my_strstr(str, arr);

	printf("%s\n", temp);

	return 0;
}

程序注释图

程序注释图
程序运行结果图
运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值