我的C/C++之路-009课(字符串操作&重写C系统一些字符串操作函数)
花了一个多小时,终于把这些写完了,贴贴出来和大家分享下,都是关于字符串操作的,不懂请留言,注释都很清楚的
[cpp]
#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);
}
//替换 www.zzzyk.com
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;
}
摘自 mzlqh的专栏
补充:软件开发 , C语言 ,