1. strlen:计算字符串长度.(不包含'\0')
eg:
int Mystrlen(const char *str)
{
assert(str != NULL);//不可以传空指针
int i = 0;
while(*str!='\0')//遇'\0'时结束
{
i++;
str++;
}
return i;//字符串有效长度,不包含'\0'
}
2. strcpy:字符串拷贝.
把src中的字符一个一个复制到des中
void Mystrcpy(char *des,char *src)
{
int i;
for(i=0;src[i]!='\0';i++)
{
des[i] = src[i]; // 也可以表示成:*(des+i) = *(src+i),复制
}
des[i] = '\0';//标志字符串复制结束
}
3. strcat:字符串的连接.
把src所指字符串添加到des结尾处(覆盖des结尾处的'\0')实现字符串的连接。
char * Mystrcat(char *des,const char *src)
{
assert( des != NULL && src != NULL);//断言不为空串
if(des == NULL || src == NULL)
{
return des;
}
char *p =des;
while( *des != '\0')
{
des++;//找到des的尾
}
while( *src != '\0')
{
* des++ = *src++;//字符串的连接
}
return p;//返回目的地指针des
}
4, strcmp:字符串的大小比较.
设这两个字符串为str1,str2,从两字符串首元素开始比较,相等两字符串指针分别加一,只要分出胜负,循环结束,若str1==str2,则返回0;若str1>str2,则返回1,否则返回-1。
int Mystrcmp(const char *str1 ,const char *str2)
{
assert(str1 != NULL && str2 != NULL);
int tmp;
while((tmp=*str1 -*str2)==0)
{
str1++;
str2++;
}
if(tmp>0)
{
return 1;
}
if(tmp==0)
{
return 0;
}
if(tmp<0)
{
return -1;
}
return tmp;
}
5. atoi(const char *):字符串转换成整形数
“123”->123,"1a23"->1,"a123"->0
int Myatoi(const char *str)
{
int tmp =0;
while(isdigit(*str)) //isdigit是一个判断是否是数字的函数
{
tmp=tmp*10+(*str -'0');//每个数的ASCII码为(n-'\0'),tmp*10增高位数即1->12->123
str++;
}
return tmp;
}
6. itoa(int) 整形数字转换为字符串的数字
123->"123"
char * Myitoa(char *str,int num)
{
int tmp=0;
int count = 0;
char *p = str;
int y;
while(num!=0)
{
tmp=num; //依次取下3 ,2,1.
num/=10;//降低位数 即;123->12->1
*str++= tmp+'0';//字符串中数字对应的ASCII码为('\0'+n)
count++; //统计次数
}
*str= '\0'; // 字符串以'\0'结尾
str--;
for(y = 0;y < count/2;y++) //字符串的逆置
{
tmp = *(str - y);
*(str - y) = *(p + y);
*(p + y) = tmp;
}
return p;
}