C语言实现常用字符串相关函数

1.strcpy-字符串拷贝

   函数原型:char* strcpy(char* destination,const char* source);

   将source的内容拷贝到destination中

#include<stdio.h>
#include<assert.h>
char* My_strcpy(char* str1, char* str2)//将str2的内容拷贝到str1,包含str2末尾的\0
{
	assert(str1 && str2);//如果传入的是空指针,返回错误信息
	char* ret = str1;
	while (*str1++ = *str2++);
	return ret;
}
int main()
{
	char arr1[20] = "abcdef";
	char arr2[] = "xyz";
	printf("%s\n",My_strcpy(arr1, arr2));
	return 0;
}

注意:arr1要能够放得下arr2的内容,包含arr2末尾的\0

2.strcat-字符串追加

   函数原型:char* strcat(char*destination,const char* source);

   在destination后\0处追加source,source第一个字符会覆盖destination末尾的\0

#include<stdio.h>
#include<assert.h>
char* My_strcat(char* str1, const char* str2)//将str2的内容追加到str1后面
{
	assert(str1 && str2);
	char* ret = str1;
	while (*str1)//循环至arr1的末尾\0
	{
		str1++;
	}
	while (*str1++ = *str2++);
	return ret;
		
}
int main()
{
	char arr1[20] = "Hello ";
	char arr2[] = "world";
	printf("%s\n", My_strcat(arr1, arr2));
	return 0;
}

注意:和模拟实现strcpy一样,模拟实现strcat也要考虑arr1能否放得下arr1和arr2加起来的内容

3.strcmp-字符串比较

   函数原型:int strcmp(const char*str1,const char*str2);

   这个函数比较的是这两个指针指向字符的阿克斯码

   str1>str2         返回大于0的数字

   str1=str2         返回等于0的数字

   str1<str2         返回小于0的数字

#include<stdio.h>
#include<assert.h>
int My_strcmp(const char* str1, const char* str2)//由于不修改指针指向的内容,因此将指针声明为const类型提高代码健壮性
{
	assert(str1 && str2);
	while (*str1 == *str2)
	{
		if (str2 == '\0')
		{
			return 1;
		}
		str1++;
		str2++;
	}
	return *str1 - *str2;//str1所指向的字符的阿克斯码大于str2指向的字符计算结果就大于0,否则小于0
}
int main()
{
	char arr1[20] = "abcdef";
	char arr2[] = "abcxyz";
	printf("%d\n", My_strcmp(arr1, arr2));
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值