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;
}
上一篇 下一篇

猜你喜欢

热点阅读