字符串操作函数

一、字符串操作函数

在C语言程序库中为我们提供了多个字符串操作函数,这些函数的原型包含在string.h头文件中。其中最常用的有:strlen() 、strcat()、strcmp()、strcpy()、等。

长度受限制的字符串操作函数

1、strlen()函数说明与模拟实现

函数原型:

size_t strlen( const char *string );

功能: strlen( )函数用于统计字符串的长度, ‘\0’ 作为结束标志,返回值返回的是字符串中的长度(返回的长度不包括 ‘\0’)
例:

char str1[]="hello";
char str2[5]={
   'h','e','l','l','o'};

printf("str1 = %d\n", strlen(str1));
printf("str2 = %d\n", strlen(str2));

运行结果
由运行结果可知:str1的字符串长度为5,str2的长度不是5,而是21(随机值),对结果进行分析:
str1 在内存中的存储方式,strlen()函数读取到 ‘\0’ 时读取结束,返回值为 ‘\0’ 前面出现的字符个数(不包含 ‘\0’)。
str1字符串的存储方式
str2 在内存中存放的方式,strlen()函数读取的是 ‘\0’ 之前的字符个数,所以当读取到最后一个字符 o 时并不会停止,而是会继续向后读取,直至遇到 ‘\0’ 为止;str2最后一个字符 ’o‘与 **’\0’**之间的个数是不确定的,所以字符串str2的长度是一个大于5的随机值;
str2在内存中的存储方式
strlen()函数的模拟实现
方法一:计数方式

size_t my_strlen(const char *string)
{
   
	assert(string);
	size_t count = 0;
	while (*string++)
		count++;
		
	return count;
}

方法二:尾指针 — 头指针

size_t my_strlen(const char * string)
{
   
	assert(string);
	const char* start = string;//将字符串首地址赋值给start
	while (*string)			//当指针指向 '\0' 结束循环,此时指针指向的'\0'的首地址
		string++;			
	return string - start;	
}

示意图:
在这里插入图片描述
方法三:递归的方式实现

size_t my_strlen(const char * string)
{
   
	assert(string);
	if (!*string)		//当字符串指向 '\0' 时,返回0
		return 0;
	else
		return 1 + my_strlen(string + 1);  //当字符串指向不为 '\0' 时,调用函数自身,实现递归调用
}

2、strcpy()函数说明与模拟实现

函数原型:

char *strcpy( char *strDestination, const char *strSource );

功能: strcpy()将strSource为首地址的字符串拷贝到以strDestination为首地址的字符串中(包括 ‘\0’),并返回strDestination的地址。

使用案例:

int main()
{
   
	char str1[]="hello china!";
	char str2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值