设为首页 加入收藏

TOP

我的C/C++之路-009课(字符串操作&重写C系统一些字符串操作函数)
2014-11-24 00:33:12 来源: 作者: 【 】 浏览:25
Tags:C/C 之路 -009 字符串 操作 重写 系统 一些 函数

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

[cpp]
#include
/**
字符串操作&重写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.2cto.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 {
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/C++之路-010课(结构体使用.. 下一篇我的C/C++之路-008课(打印一些图..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: