0
点赞
收藏
分享

微信扫一扫

字符串函数模拟实现(strlen,strcmp,strcat,strcpy)

金穗_ec4b 2022-02-18 阅读 76
c语言

目录

1.strlen函数 (字符串求长函数)

模拟实现strlen函数

计数器

递归

 指针-指针

2.strcmp函数(字符串比较大小函数)

 模拟实现strcmp函数

3.strcat函数(字符串追加函数)

 模拟实现strcat函数

4.strcpy函数 (字符串拷贝函数)

模拟实现strcpy函数


首先我们要知道字符串在编写代码中使用是非常多的,但是在C语言中却没有字符串类型这就使得我们在使用字符串时产生一定的难度所以今天我们就来讲讲字符串函数方便日后我们使用字符串

字符串可以划分为常量字符串字符数组,常量字符串使用不可修改,所以我们主要讲讲字符数组中的字符串

1.strlen函数 (字符串求长函数)

strlen函数求字符串长度,字符串必须以'\0'结尾

strlen函数是求在'\0'前出现的字符个数(不包含'\0')特别强调不包含‘\0’

函数返回值是 size_t (无符号整型)

模拟实现strlen函数

计数器

int my_strlen(const char* str)
{
	assert(str);
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

递归

int my_strlen(const char* str)
{
	assert(str);
	if (*str == '\0')
	{
		return 0;
	}
	return my_strlen(str + 1) + 1;
}

 指针-指针

int my_strlen(const char* str)
{
	assert(str);
	char* tmp = str;
	while (*str)
	{
		str++;
	}
	return abs(tmp-str);
}

注意strlen与sizeof的区别

1.strlen是库函数 sizeof是运算符

2.strlen是计算字符的个数(不含‘\0’) sizeof是计算分配空间字节数

3.strlen参数只能是char*(字符串) sizeof可以以函数,类型为参

2.strcmp函数(字符串比较大小函数)

第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

 模拟实现strcmp函数

int my_strcmp(const char* str1, const char* str2)
{
	assert(str1&&str2);
	while (*str1==*str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

3.strcat函数(字符串追加函数)

 源字符串必须以 '\0' 结束
目标空间必须足够大,能容纳下源字符串的内容
目标空间必须可修改

char* strcat(目标地,原始地);

注意strcar不能自己追加自己 可以使用strncat进行追加

 模拟实现strcat函数

char* my_strcat(char* dest, const char* src)
{
	assert(dest&&src);
	char* tmp = dest;
	while (*dest)
	{
		dest++;
	}
	while (*dest++ = *src++)
	{
		;
	}
	return tmp;
}

要注意strcat函数返回的是目标地地址所以要提前保存 

4.strcpy函数 (字符串拷贝函数)

 源字符串必须以 '\0' 结束,'\0'也会拷贝到目的地
目标空间必须足够大,以确保能存放源字符串

目标空间必须可变

模拟实现strcpy函数

char* my_strcpy(char* dest, const char* src)
{
	assert(dest&&src);
	char* tmp = dest;
	while (*dest++=*src++)
	{
		;
	}
	return dest;
}

以上是字符串操作中常见的库函数包含了使用注意事项和模拟实现库函数(造轮子)会持续更新其他常用库函数

举报

相关推荐

0 条评论