您的位置:首页 > 编程语言 > C语言/C++

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

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

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: