2019-01-21 自定义strlen、strcpy、str
2019-01-21 本文已影响7人
静倚晴窗笑此生
#include <stdio.h>
/*
* 计算字符串长度,不包括‘\0’;
*/
int mystrlen(const char *s)
{
int i;
for(i=0; *(s+i)!='\0'; i++)
;
return i;
}
/*
* 复制 src 的字符串到 dest,并将dest中的内容覆盖(包括‘\0’);
*/
char *mystrcpy(char *dest, const char *src)
{
int i;
for(i=0; *(src+i) != '\0'; i++)
{
*(dest+i) = *(src+i);
}
*(dest+i) = '\0';
return dest;
}
/*
* 比较两个字符串的大小,相等返回0,不相等返回ASCII码差值;
*/
int mystrcmp(const char *s1, const char *s2)
{
int i,ret;
for(i=0; *(s1+i) != '\0'||*(s2+2) != '\0';i++)
{
if(*(s1+i)==*(s2+i))
{
return 0;
}
else
{
ret = *(s1+i) - *(s2+i);
return ret;
}
}
}
/*
* 将 src 字符串连接到 dest 字符串后面;
*/
char *mystrcat(char *dest, const char *src)
{
int i;
int longth = mystrlen(dest);
for(i=0; *(src+i) != '\0'; i++)
{
*(dest+longth+i) = *(src+i);
}
*(dest+longth+i) = '\0';
return dest;
}
int main(void)
{
char s[] = "hello world";
char s1[] = "abcd";
char s2[] = "degi";
printf("mystrlen: %d\n",mystrlen(s));
printf("mystrcpy: %s\n",mystrcpy(s,s1));
printf("mystrcmp: %d\n",mystrcmp(s2,s1));
printf("mystrcat: %s\n",mystrcat(s1,s2));
return 0;
}