自我定义字符串函数
一.strcpy
void Mystrcpy(char *des,const char *src)//复制
{
assert(des!=NULL && src!=NULL);
if(des==NULL || src==NULL)
{
return ;
}
while(*src != '\0')
{
*des++ = *src++;
}
*des = '\0';
}
int main()
{
char arr[100];
char brr[]="abc";
Mystrcpy(arr,brr);
printf("%s",arr);
}
二.strcat
void Mystrcat(char *arr,const char *brr)//链接
{
assert(arr!=NULL && brr!=NULL);
while(*arr!='\0')
{
*arr++;
}
while(*brr!='\0')
{
*arr++=*brr++;
}
*arr='\0';
}
int main()
{
char arr[100]="abc";
char brr[]="xyz";
Mystrcat(arr,brr);
printf("%s",arr);
}
三.strcmp
int Mystrcmp(const char *str1,const char *str2)//比较大小
{
int tmp;
{
int tmp;
while((tmp=*str1 - *str2)==0 && *str1!='\0')
{
str1++;
str2++;
}
{
str1++;
str2++;
}
return tmp;
}
int main()
{
char arr[]="abc";
char brr[]="acb";
}
int main()
{
char arr[]="abc";
char brr[]="acb";
printf("%d\n",Mystrcmp(arr,brr));
}
}
四.strlen
int Mystrlen(const char *str)//有效字符长度
{
int i;
for(i=0;str[i]!='\0';i++);
return i;
}
int main()
{
char str[]="abcde";
{
int i;
for(i=0;str[i]!='\0';i++);
return i;
}
int main()
{
char str[]="abcde";
printf("%d\n",Mystrlen(str));
}
}
五.atoi
int Myatoi(const char *str)//"123"->123,"12a3"->12字符串变数字
{
int tmp = 0;
{
int tmp = 0;
while(isdigit(*str))
{
tmp = tmp*10 + *str - '0';
str++;
}
{
tmp = tmp*10 + *str - '0';
str++;
}
return tmp;
}
int main()
{
char arr[]="158a5";
}
int main()
{
char arr[]="158a5";
printf("%d\n",Myatoi(arr));//158
}
}
六.itoa
void Reverse(char *str)//"abc"->"cba"
{
char tmp;
char *cp;
{
char tmp;
char *cp;
for(cp=str;*cp!='\0';cp++) ;
for(cp--; str<cp; str++,cp--)
{
tmp = *str;
*str = *cp;
*cp = tmp;
}
}
{
tmp = *str;
*str = *cp;
*cp = tmp;
}
}
void Myitoa(char *str,int num)//1234567->"7654321"->"1234567"数字变字符串
{
char *p = str;
{
char *p = str;
while(num!=0)
{
*str = (num%10) + '0';
num /= 10;
str++;
}
{
*str = (num%10) + '0';
num /= 10;
str++;
}
*str = '\0';
Reverse(p);
}
}
int main()
{
int num=1234567;
char str[10];
{
int num=1234567;
char str[10];
Myitoa(str,num);
printf("%s\n",str);
}
printf("%s\n",str);
}