C语言中strcpy,strcmp,strlen,strcat等函数原型

#include <stdio.h>

#include <assert.h>


char *strcpy(char *strDestconst char *strSrc) {

    char *address = strDest;

    assert((strDest != NULL) && (strSrc != NULL));

    while (*strSrc != '\0') {

        *strDest++ = *strSrc++;

    }

    *strDest = '\0';

    return address;

}


char *strcat(char *strDestconst char *strSrc) {

    char *address = strDest;

    assert((strDest != NULL) && (strSrc != NULL));

    while (*strDest != '\0') {

        strDest++;

    }

    while (*strSrc != '\0') {

        *strDest++ = *strSrc++;

    }

    *strDest = '\0';

    return address;

}


int strcmp(const char *str1const char *str2) {

    assert((*str1 != '\0' && *str2 != '\0'));

    while (*str1 && *str2 && *str1 == *str2) {

        str1++;

        str2++;

    }

    return *str1 – *str2;

}


int new_strlen(const char *str) {

    assert(str != NULL);

    int len = 0;

    while (*str++ != '\0') {

        ++len;

    }

    return len;

}


void *memcpy(void *dstvoid *srcsize_t n) {

    char *dp = (char*)dst;

    char *sp = (char*)src;

    assert((src != 0) && (dst != 0) && n > 0);

    while (n–) {

        *(dp++) = *(sp++);

    }

    *dp = '\0';

    return dst;

}


void *new_memmove(void *dstconst void *srcint n) {

    char *dp = (char *)dst;

    char *sp = (char *)src;

    assert((src != 0) && (dst != 0) && (n > 0));

    if (sp > dp || (sp + n) < dp) {

        while (n–)

            *(dp++) = *(sp++);

        *dp = '\0';

    }

    else if (sp < dp) {

        sp += n;

        dp += n;

        *dp = '\0';

        while (n–)

            *(–dp) = *(–sp);

    }

    return dst;

}



int main() 

{

    char dest[10];

    charsrc = "test!";

    charret = strcpy(destsrc);

    printf("Test strcpy ret is :%s\n"ret);

    char cat1str[20] = "cat1";

    charcat2str = "cat2";

    printf("Test strcat ret is :%s\n"strcat(cat1strcat2str));

    char *len = "len";

    printf("Test strlen ret is :%d\n"new_strlen(len));

    char mem_dest[20];

    charmem_src = "the src test memcpy";

    printf("Test memcpy ret is :%s\n"memcpy(mem_destmem_src, 10));

    char mv_dest[20];

    charmv_src = "the src test memmove";

    printf("Test memmove ret is :%s\n"new_memmove(mv_destmv_src, 10));

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注