我的C/C++之路-009课(字符串操作&重写C系统一些字符串操作函数)

花了一个多小时,终于把这些写完了,贴贴出来和大家分享下,都是关于字符串操作的,不懂请留言,注释都很清楚的

 

#include<stdio.h>
/**
字符串操作&重写C系统一些字符串操作函数
strcpy  strcmp  strcat
*/
void strReplace(char *,char *,int );	//替换
char *strCopy(char *,const char *);	    //拷贝
int strCompare(char *,char *);          //比较
char *strConcat(char *,char *);         //拼接
void strConvert(char *);                //倒置
int strLength(char *);                  //获取长度

//调用函数
void strOperate()
{
	char source[]="China";
	char rep[]="ese";
	//替换
	puts("---------replace------------");
	strReplace(source,rep,4);
	puts(source);
	//拷贝
	puts("---------strcpy------------");
	char distStr[10];
	strCopy(distStr,"abcdefg");
	puts(distStr);
	//比较
	puts("---------strcmp------------");
	printf("%d\n",strCompare("ABCD","ABC"));

	//获取长度
	puts("---------strlength------------");
	printf("%d\n",strLength("ABCDe"));
	
	//拼接
	puts("---------strconcat------------");
	char sc[30] = "Chinese";
	strConcat(sc," FUCK Japanese");
	puts(sc);

	//倒置
	puts("---------strconvert------------");
	char s[] = "I love my homeland";
	strConvert(s);
	puts(s);
	
}
//替换
void strReplace(char *soucrStr,char *replaceStr,int pos)
{
	while(pos>0&&*soucrStr!='\0')//pos>1为了防止指针后移,以至于不准确
	{
		soucrStr++;//把指针移到指定位置
		pos--;
	}
	while(*soucrStr!='\0'&&*replaceStr!='\0')
	{
		*soucrStr = *replaceStr;//替换
		soucrStr++;
		replaceStr++;
	}
}
//拷贝(目标字符数组要比源数组大,不然会溢出,产生各种悲剧)
char *strCopy(char *distStr,const char *sourceStr)
{
	char *address = distStr;
	while((*distStr++=*sourceStr++)!='\0');//先赋值比较再自加
	//*distStr++是对指针++,再取值,至右向左,单独测试过了
	return address;
}
//比较
int strCompare(char *str1,char *str2)
{
	while(*str1&&*str2&&(*str1==*str2))
	{
		str1++;
		str2++;
	}
	return *str1-*str2;
}
//拼接
char *strConcat(char *distStr,char *sourceStr)
{
	char *address = distStr;
	while(*distStr)//移动到目标字符串尾部,若使用while(*distStr++),则会出错
	{
		distStr++;
	}
		
	while((*distStr++=*sourceStr++)!='\0');

	return address;
}
//倒置
void strConvert(char *str)
{
	int len = strLength(str);
	int mid = len/2;
	char tmp;
	for(int i=0;i<mid;i++)
	{
		tmp = str[i];
		str[i] = str[len-i-1];
		str[len-i-1] = tmp;
	}
}
//获取长度
int strLength(char *str)
{
	int len = 0;
	while(*str++)
		len++;
	return len;
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值