分类: Oracle
2005-09-14 17:56:05
水水水水水水水水水水水水水水
要离职了,这个是在现在公司,无聊的时候,随便写的,不好带走,放在这里吧.没其他意思只是不舍得丢掉而已.错误肯定是有很多的,但是怎么样也是我亲手写的.还有很多函数没有写完.看以后有没有时间了.
/***************************************************
2005-09-03 21:45.函数中传入参数 pSrc,char *tmp=pSrc;
然后函数中处理时,都是pSrc操作,返回tmp.
但是网上的都是对tmp操作,返回pSrc.
2005-09-11 17:26.函数对传入参数不做任何检查,要求调用者
控制好传入参数的合法性.
***************************************************/
#include
#include
#include
#include
/***************************************************
name: MyStrCat(char* s1,char* s2)
function: 字符串连接函数。将s2追加到s1尾部
date: 2005-09-03
author: shenxl
****************************************************/
char * MyStrCat(char *s1,char *s2){
char *tmp=s1;
while(*tmp)/*找到tmp尾,即*tmp=' ',被s2的第一个字符覆盖*/
tmp++;
while((*tmp++ = *s2++) != ' ')
;
return s1;
}
/***************************************************
name: MyStrnCat(char* s1,char* s2,nusigned count)
function: 字符串连接函数。将s2中count个字符追加到s1尾部
date: 2005-09-11
author: shenxl
****************************************************/
char* MyStrnCat(char *dest,char *src,unsigned count){
char *tmp=dest;
while(*tmp)/*找到tmp尾,即*tmp=' ',被s2的第一个字符覆盖*/
tmp++;
while((*tmp++ = *src++) && --count)
;
if(count>=0)
*tmp=' ';
return dest;
}
/****************************************************
name: MyStrCpy(char* dest,char* src)
function: 字符串拷贝函数。= strcpy()
date: 2005-09-03
author: shenxl
****************************************************/
char * MyStrCpy(char *dest,char *src){
char *tmp = dest;
while(*tmp++ = *src++)
;
/*这里是否要对tmp进行最后加一个' '??*/
/*不需要,' '已经复制过去了,才让while循环结束*/
return dest;
}
/*******************************************************
name: MyStrnCpy(char* dest,char* src,int count)
function: 字符串拷贝函数。= strncpy(),
如果 count<=strlen(src)THEN src末尾的NULL字符将不被复制
如果 count >strlen(src)THEN src将把NULL字符复制过去.
date: 2005-09-03
author: shenxl
****************************************************/
char * MyStrnCpy(char *dest,char *src,int count){
char *tmp = dest;
for(; (count--) &&(*tmp++ = *src++) ; ){
;/*count--不成立,&&后面的赋值不做*/
}
if(count>=0){
*tmp=' ';
}
return dest;
}
/****************************************************
name: MyStrRpe(char *src,char* p1,char* p2)
function: 字符串替换函数。将p1替换成p2
若源字符串中没有p1,则返回源字符串。
date: 2005-09-03
author: shenxl
****************************************************/
char *MyStrRep(char *src,char *p1,char *p2){
char *pTmp = src;
char *iPosition;
int ip1len,ip2len;
ip1len = strlen(p1);
ip2len = strlen(p2);
for(;src!=' ';){
iPosition = strstr(src , p1); /*匹配被替换的字符串*/
if(iPosition!=NULL){
src = iPosition + ip2len; /*跳过P2长度个字符*/
memmove(src,iPosition+ip1len,strlen(iPosition+ip1len));
memcpy(iPosition,p2,strlen(p2)); /*替换*/
}else{
return pTmp;
}
}
return pTmp;
}
/****************************************************
name: MyStrCmp(char *p1,char* p2)
function: 比较字符串,
date: 2005-09-11
author: shenxl
****************************************************/
int MyStrCmp(char *p1,char *p2){
char *pStr1=p1;
char *pStr2=p2;
int rtnVal;
for(; (*pStr1++)&&(*pStr2++) ; ){
if( (rtnVal=*pStr1 - *pStr2) !=0){
return rtnVal;
}
}
return 0;
}
/****************************************************
name: MyStrnCmp(char *p1,char* p2,int count)
function: 比较字符串,比较前count个字符
date: 2005-09-11
author: shenxl
****************************************************/
int MyStrnCmp(char *p1, char *p2, int count){
char *pStr1=p1;
char *pStr2=p2;
int rtnVal;
for(; (count--)&&(*pStr1++)&&(*pStr2++); ){
if( (rtnVal=*pStr1 - *pStr2) !=0){
return rtnVal;
}
}
if(count >=0)
return 0;
return 0;
}
/****************************************************
name: MyStrSet(char *p1,int c)
function: 设置字符串中字符为 c
date: 2005-09-11
author: shenxl
return: char *
****************************************************/
char *MyStrSet(char *p1,int c){
char *pTmp=p1;
for(;*p1;)
*p1++=c;
return pTmp;
}
/****************************************************
name: MyStrnSet(char *p1,int c,int count)
function: 设置字符串中count 个字符为 c
date: 2005-09-11
author: shenxl
return: char *
****************************************************/
char *MyStrnSet(char *p1,int c,int count){
char *pTmp=p1;
for(;*p1 && count;){
*p1++=c;
count--;
}
return pTmp;
}
/****************************************************
name: MyStrChr(char *p1,int c)
function: finds the first occurrence of c in string,
or it returns NULL if c is not found.
The null-terminating character is included
in the search. (MSDN)
date: 2005-09-11
author: shenxl
return: char *
****************************************************/
char *MyStrChr(char *p1, int c){
char *pTmp;
for(;(*p1!=c)&& *p1!=' ';){
p1++;
}
return p1;
}
int main(){
char pSrc[]="just for test just";
char p1[]="abcdkkkk";
char p2[]="efghij";
char *p3;
#if 0
p3=MyStrCat(p1,p2);
p3=MyStrCpy(p1,p2);
p3=MyStrRep(pSrc,"us","usus");
printf("MyStrCmp()=%d
",MyStrCmp("aaabb","aaab"));
printf("%s",MyStrnCat(p1,p2,3));
printf("%d",MyStrnCmp("aaa","aaab",3));
printf("%s",MyStrSet(p1,'a'));
printf("%s",MyStrnSet(p1,'a',10));
printf("%s",MyStrChr(p1,'m'));/*m没找到,返回NULL*/
#endif
getch();
return 0;
}