以下代码是自己学习过程中通过借鉴加上自己的理解编写出的代码已经在VC++2008版本上调试通过,主函数因为很简单所以没有附上。
1. strlen()
int my_strlen(char *str)
{
int i=0;
while(str[i])
{
//if(((str[i])>65)&&((str[i])<122) //可以按照ASCII码设置对字母还是数字的统计
i++;
//continue;
}
return i;
}
2. strcpy()
char *my_strcpy(char *str1,char *str2)
{
if ((str1==NULL)||(str2==NULL))
cout<<"invalid argument"<<endl;
char *str=str2;
while( (*str++=*str1++)!='/0');
return str2;
}
3. strcat()
char *my_strcat(char *str1,char *str2)
{
assert(*str1!=NULL);//设置断言检查参数合法性
assert(*str2!=NULL);
char *temp=str1;
while(*temp)
*temp++;
while((*temp++=*str2++)!='/0');
return str1;
}
4. strcmp()
int my_strcmp(char *s1,char *s2)
{
int result=0;
int c;
while(*s1||*s2) //如果S1和S2比较完毕 (‘/0’)跳出循环;
{
c=*s1-*s2;
s1++;s2++;
if(c>0) //判断S1和S2对应的字符是否不同,如果S1的大于S2对应的字符,返回1,小于返回-1,相等返回0;
{
result=1;
break;
}
else
if(c<0)
{
result=-1;
break;
}
}
return result;
}