常见字符串函数内部实现方法

来源:互联网 发布:林珊珊化妆品淘宝店铺 编辑:程序博客网 时间:2024/05/28 16:27

转:http://blog.csdn.net/hkh5730/article/details/14674183

 

'\0'ASCII码为0的字符,即字符串结点符

'0'是数字字符'0',ASCII码是48

1:memset

void *memset(void *s, int c, size_t count)

s开始的count字节内存都赋值为c

void *memset(void *s,int c, size_t count)

{

    char *xs = s;//声明一个中间变量来操作,且为char *

    while(count--)

        *xs++ =c;

    return s;

}

 

2:memcpy 内存赋值,复制src开始count字节内存值到dest

void *memcpy(void *dest,constvoid *src, size_t count)

{

char *tmp = dest;

const char *s = src;

while (count--)

*tmp++ = *s++;

return dest;

}

 

3:strcpy字符串复制,遇结束符停止

char *strcpy(char *dest, const char *src)

{

    char *tmp =dest;

    while((*dest++ = *src++) != '\0');

    return tmp;

}


4:复制指定长度字符串

char *strncpy(char *dest, const char *src, size_tcount)

{

    char *tmp =dest;

    while(count) {

        if((*tmp = *src) != 0)

           src++;

        tmp++;

        count--;

    }

    return dest;

}

 

5:字符串连接,src连接到dest最后一个字符

char *strcat(char *dest, const char *src)

{

    char *tmp =dest;

    while(*dest)

        dest++;//遇结束符停止,dest指向结束符

    while((*dest++ = *src++) != '\0');

    return tmp;

}

 

6:连接n个字节字符到dest末

char *strncat(char *dest, const char *src, size_tcount)

{

    char *tmp =dest;

    if (count) {

        while(*dest)

           dest++;

        while((*dest++ = *src++) != 0) {

            if(--count == 0) {

               *dest = '\0';

               break;

            }

        }

    }

    return tmp;

}

 

7:字符串比较,如果有发现不一样字符,则失败。

C1<c2   返回-1;C1>C2 返回1; 完全相同返回0

int strcmp(const char *cs, const char *ct)

{

    unsignedchar c1, c2;

    while (1) {

        c1 =*cs++;

        c2 =*ct++;

        if (c1!= c2)

           return c1 < c2 ? -1 : 1;

        if (!c1)

           break;

    }

    return 0;

}

 

8:求字符串字符个数,除去结束符

size_t strlen(const char *s)

{

    const char*sc;

    for (sc = s;*sc != '\0'; ++sc);

    return sc -s;

}

0 0
原创粉丝点击