C语言中一些有关字符串的常见函数的使用及模拟实现(1)

在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了
⼀系列库函数,接下来我们就学习⼀下这些函数。

文章目录

  • strlen函数的使用及模拟实现
  • strcmp函数的使用及模拟实现
  • strcpy函数的使用及代码实现
  • strcat函数的使用及模拟实现

strlen函数的使用及模拟实现

strlen函数是用来计算字符串的大小的,统计\0之前的字符个数。

C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第1张图片

http://legacy.cplusplus.com/reference/clibrary

这是C语言提供的一个库函数讲解,其中我们可以看到strlen的返回类型是size_t,是一个无符号整型,参数是一个const修饰的指针。

C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第2张图片
使用函数时传入首元素的地址

接下来来模拟实现一下这个函数

size_t my_strlen(const char* str)
{
	unsigned int count = 0;

	while (*str++)
	{
		count++;
	}
	return count;
}

这就是函数strlen的代码实现,是比较容易的。

strcmp函数的使用及模拟实现

strcmp函数是用来比较两个字符串大小的,但是注意的是它并不是比较字符串的长短,而是每个字符对应的ASCII码值的大小,从第一个开始,若第一个相同则比较下一个…

C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第3张图片
该函数的返回类型是int类型,参数是两个指针,这两个指针存放的内容是不可以被改变的,所以使用const修饰。
比较结果大于则返回一个正数,等于则返回一个0,小于则返回一个负数。

C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第4张图片
这里小于则返回一个-1,是一个负数。

来看一下strcmp函数的模拟实现
来看代码

#include
int my_strcmp(const char* str1, const char* str2)
{
	asssert(str1&&str2);//assert断言,防止空指针错误使用
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;
		str1++;
		str2++;
	}
	return *str1 - *str2;//这里大于返回的值就是
	//整数,等于就是0,小于就是负数
}

这就是strcmp函数的代码实现,是比较容易理解的。

strcpy函数的使用及代码实现

strcpy函数就是字符串拷贝函数,就是把一个字符串拷贝到另一个字符串中。
C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第5张图片

仔细看,这个函数的返回类型是char*类型的,参数是两个指针,是指拷贝的两个字符串的首元素。
C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第6张图片
这是这个网站提供的例子

这是C语言提供的网站,提供给哦我们来学习库函数,遇到陌生的库函数也可以通过这个网站来学习库函数,

接下来来看一下这个函数的模拟实现

#include
char* my_strcpy(char* s1,const char* s2)
{
	assert(s1 && s2);
	char* ret = s1;

	while (*s2)
	{
		*s1 = *s2;
		s1++;
		s2++;
	}
	return ret;
}

这就是strcpy函数的模拟实现,也是比较易于理解的。

strcat函数的使用及模拟实现

strcat就是字符串追加函数,就是把一个字符串加到另一个字符串的结尾。

C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第7张图片
来看一个strcat函数使用的例子。
C语言中一些有关字符串的常见函数的使用及模拟实现(1)_第8张图片

这个函数的返回类型是char*类型,参数是两个指针。追加的字符串不需要改变,所以使用const修饰。

知道了这些,来看一下strcat函数的模拟实现。

#include
char* my_strcat(char* s1, char* s2)
{
	assert(s1 && s2);
	char* ret = s1;
	while (*s1)
	{
		s1++;
	}
	while (*s1++ = *s2++);
	return ret;
}

这就是字符串中比较常用也比较简单的四个库函数。

你可能感兴趣的:(c语言,开发语言)