C语言:字符串函数(strlen,strcpy,strcat,strcmp)

1.strlen

作用:计算字符串的长度

size_t   strlen ( const char * str );
1.字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包 含 '\0' )。
 
2.参数指向的字符串必须要以 '\0' 结束。
 
3.注意函数的返回值为size_t,是无符号的( 易错 )

 下面我们既然知道strlen,我们便来自己模拟实现strlen函数

my_strlen(const char* str)
{
	int sum = 0;
	//遇到\0则停止
	while (*str != '\0')
	{
		str++;
		sum++;
	}
	return sum;

}
int main()
{
	//定义一个数
	char arr1[] = "abcde";
	int ret = my_strlen(arr1);
	printf("%d", ret);

	return 0;
}

 

2. strcpy

作用:拷贝字符串

char* strcpy(char * destination, const char * source );
1.源字符串必须以 '\0' 结束。
 
2.会将源字符串中的 '\0' 拷贝到目标空间。
 
3.目标空间必须足够大,以确保能存放源字符串。
 
4.目标空间必须可变。

 前面是目标空间,要将后面的字符拷贝到前面的空间中

 下面我们既然知道strcpy原理了,我们便来自己模拟实现strcpy函数

//模拟实现strcpy
char*my_strcpy(char* str1, const char* str2)
{
	//断言
	assert(str1 && str2);
	char* ret = str1;
	//会将字符串的所有字符拷贝过去,包括\0
	while (*str1++ = *str2++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "abcd";
	my_strcpy(arr1, arr2);
	printf("%s", arr1);

	return 0;
}

 

 3.strcat

作用:追加字符串

 char * strcat ( char * destination, const char * source );

1.源字符串必须以 '\0' 结束。
 
2.目标空间必须有足够的大,能容纳下源字符串的内容。
 
3.目标空间必须可修改。
 
4.并且不能给自己追加

原理:先找到目标空间的\0,然后开始拷贝 

​
char*my_strcat(char* str1, const char* str2)
{
	assert(str1 && str2);
	char* ret = str1;
	while (*str1 != 0)
	{
		str1++;
	}
	while (*str1++ = *str2++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[20] = "xxxxx";
	char arr2[] = "abcd";
	my_strcat(arr1, arr2);
	printf("%s", arr1);

	return 0;
}

​

 c0741fbb7357409dbeadb65fb251f3bf.png

 

 4.strcmp

作用:比较字符串的大小

字符串的比较规则:

依次比较字符的ascll值。                     例如:abcd(大)和abbbbb(小)

a        b        c        d                                                大

|          |         |         |

a        b        b        b        b        b                            小

与字符串的长短无关

然后大家可以看看这篇文章:初识C语言:strcmp函数(比较两个字符串的大小)_strcmp怎么比较字符串大小_元清加油的博客-CSDN博客

 

 

 

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-元清-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值