模拟实现库函数

1、模拟实现strcpy函数

#include
#include

char *my_strcpy(char *aims, const char *source)
{
    assert(aims);
    assert(source);

    char *ret = aims;
    while(*aims++=*source++){
        ;
    }
    return ret;
}
int main()
{
    char str1[] = "I love study!";
    char str2[15];
    printf("str2--> %s\n", my_strcpy(str2, str1));
    return 0;
}

2、模拟实现strcat函数

#include
#include

char * my_strcat(char *dest, const char *src)
{
    assert(src && dest);

    char *ret = dest;
    while (*dest != '\0')
    {
        dest++;
    }
    while (*dest++ = *src++)
    {
        ;
    }
    return ret;
}
int main()
{
    char arr[50] = { 0 };
    char str1[] = "welcome ";
    char str2[] = "to ";
    char str3[] = "word!";
    my_strcat(arr, str1);
    my_strcat(arr, str2);
    my_strcat(arr, str3);
    printf("%s\n", arr);
    system("pause");
    return 0;
}

3、模拟实现strlen函数

#include
#include
#include
int my_strlen(const char *p)
{
    int count=0;
    assert(p!=NULL);
    while(*p!='\0')
    {
        count++;
        p++;
    }
    return count;
}
int main()
{
    char arr[]="123456";
    printf("%u\n",(unsigned)my_strlen(arr));
    return 0;
}

4、.模拟实现strstr
strstr函数是为了判断你需要查找的字符串在原来的字符串中有没有,如果有,输出这个字符串的起始位置,没有,则输出空,函数原型:char * strstr ( const char * str1, const char * str2 );

#include
#include

char *my_strstr(const char *str1, const char *str2)
{
    char *cp = str1;
    char *des = str1;
    char *src = str2;
    assert(str1 && str2);

    while (*cp)
    {
        des = cp;
        src = str2;
        while (*des && *src && (*des == *src))
        {
            des++;
            src++;
        }
        if (*src == '\0')
            return cp;
        cp++;
    }
}
int main()
{
    char arr1[] = "I am a student!";
    char arr2[] = "a student";
    printf("%s\n",my_strstr(arr1,arr2));
    system("pause");
    return 0;
}

5、模拟实现strchr
strchr函数是为了找出在字符串str中第一次出项字符ch的位置,找到就返回该字符位置的指针(也就是返回该字符在字符串中的地址的位置),找不到就返回空指针,函数原型为:char * strchr ( const char * str, int character )

char *my_strchr(const char *str, int c)
{
    assert(str);

    while (*str && (*str != (char)c))
        ++str;
    if ((char)c == *str)      
        return (char *)str;
    else
        return NULL;
}
int main()
{
    char *src= "welcome to the university";
    printf("%s\n", my_strchr(src, 'o'));
    system("pause");
    return 0;
}

6、模拟实现strcmp

int my_strcmp(const char *p1, const char *p2)
{
    assert(p1&&p2);
    while (*p1 && *p2){
        if (*p1 > *p2)
            return 1;
        else if (*p1 < *p2)
            return -1;
        p1++, p2++;
    }
    if ((*p1 == '\0') && (*p2 == '\0'))
        return 0;
}
int main()
{
    char arr1[] = "abcd1234";
    char arr2[] = "abcd1234";
    printf("%d\n", my_strcmp(arr1, arr2));
    system("pause");
    return 0;
}

你可能感兴趣的:(c编程)