仿照str系列函数,完成自定义的mystrlen 、mystrcmp、mystrcat、mystrcpy
#include<stdio.h>
#include<string.h>
//求字符串长度
int mystrlen(char *str)
{
int i;
for(i = 0; str[i] != '\0'; i++);
return i;
}//拷贝字符串
char * mystrcpy(char *dest,const char *src)
{
int i = 0;
while(src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0'; //拷贝结束后加上\0结束符,因为strcpy会连同结束符一起拷贝
return dest;
}//比较字符串
int mystrcmp(const char *s1,const char *s2)
{
int sum1,sum2; //两个字符串的ascii吗值
sum1 = sum2 = 0;
for(int i = 0; s1[i] != '\0'; i++)
{
sum1 += (int)s1[i];
}
for(int i = 0; s2[i] != '\0'; i++)
{
sum2 += (int)s2[i];
}
if(sum1 == sum2)
{
return 0;
}
else if(sum1 > sum2)
{
return 1;
}
else
{
return -1;
}
}//连接字符串
char * mystrcat(char *dest, const char *src)
{
int len = mystrlen(dest);
for(int i = 0; src[i] != '\0';i++)
{
dest[len] = src[i];
len++;
}
return dest;
}int main (int argc, const char *argv[])
{
char string[20] = "hello world";
char string2[20] = "ni hao";
char *str;int len = mystrlen(string);
printf("该字符串的长度为:%d\n",len);
//比较字符串
int n; //n>0,字符串1大于字符串2 n <0相反 n=0 两个字符串相等
n = mystrcmp(string,string2);
printf("n = %d\n",n);
if(n == 0)
{
printf("两个字符串相等\n");
}
else if(n > 0)
{
printf("string 字符串大于 string2\n");
}
else
{
printf("string2 大于 string \n");
}
//拷贝字符串
str = mystrcpy(string,string2);
printf("拷贝后的字符串为%s\n",str);
printf("string = %s\n",string);
//连接字符串
str = mystrcat(string,string2);
printf("连接后的字符串为%s\n",str);
return 0;
}
输出结果: