1.strlen(字符串的长度)

size_t Strlen(const char* str)
{
assert(str);
for (size_t i = ;; ++i)
{
if (str[i] == '\0')
return i;
}
} size_t StrlenByRecursion(const char* str)
{
return *str == '\0' ? : StrlenByRecursion(str + ) + ;
}
size_t __cdecl strlen (const char * str)  //函数库里面实现的代码
{
const char *eos = str; while( *eos++ ) ; return( (int)(eos - str - 1) );
}
 

2.strcpy(字符串拷贝)

char* Strcpy1(char* dst, const char* src)
{
assert(dst && src);
int i = ;
for (; src[i] != '\0'; ++i)
{
dst[i] = src[i];
}
dst[i] = '\0';
return dst;
} char* Strcpy2(char* dst, const char* src)
{
assert(dst && src);
char* tmp = dst;
while ((*tmp++ = *src++) != '\0');
*tmp = '\0';
return dst;
} char *  strcpy (char * dest,const char* src)   //函数库中的实现

    reg_char c; 
    char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src); 
    const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1; 
    size_t n; 
     
    do 
    { 
        c = *s++; 
        s[off] = c; 
    } 
    while (c != '\0'); 
     
    n = s - src; 
    (void) CHECK_BOUNDS_HIGH (src + n); 
    (void) CHECK_BOUNDS_HIGH (dest + n); 
     
    return dest; 
}

3.strncpy

char* Strncpy(char* dst,const char* src,int lenth)
{
assert(dst && src);
char* tmp = dst;
while (lenth--)
{
if ((*tmp++ = *src) != '\0')
src++;
}
*tmp = '\0';
return dst;
}
char * __cdecl strncpy (char * dest,const char * source,size_t count)
{
char *start = dest; while (count && (*dest++ = *source++)) /* copy string */
count--; if (count) /* pad out with zeroes */
while (--count)
*dest++ = '\0'; return(start);
}
 

4.strcat(字符串连接)

char* Strcat(char* dst, const char* src)
{
assert(dst && src);
char* tmp = dst;
while (*tmp)
tmp++;
while ((*tmp++ = *src++) != '\0');
return dst;
}
char * __cdecl strcat (char * dst,const char * src)     //库中的实现方法
{
char * cp = dst; while( *cp )
cp++; /* find end of dst */ while( *cp++ = *src++ ) ; /* Copy src to end of dst */ return( dst ); /* return dst */
}
 

5.strncat

char* Strncat(char* dst,const char* src,size_t lenth)
{
assert(dst && src);
char* tmp = dst;
while (*tmp)
++tmp;
while (lenth-- && (*tmp++ = *src++));
*tmp = '\0';
return dst;
}
char * __cdecl strncat (char * front,const char * back,size_t count)     //库中实现的方法
{
char *start = front; while (*front++)
;
front--; while (count--)
if (!(*front++ = *back++))
return(start); *front = '\0';
return(start);
}
 

6.strcmp

int Strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2 && *str2)
{
str1++;
str2++;
}
return *(unsigned char*)str1 - *(unsigend char*)str2;
}
int __cdecl strcmp (const char * src,const char * dst)      //库中的实现方式
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst; if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ; return( ret );
}
 

7.strncmp

int Strncmp(const char* str1, const char* str2,size_t lenth)
{
assert(str1 && str2);
while (lenth-- && *str2)
{
if (*str1 != *str2)
return *(unsigned char*)str1 - *(unsigned char*)str2;
str1++;
str2++;
}
return ;
}
int __cdecl strncmp (const char * first,const char * last,size_t count)     //库里实现的方式
{
if (!count)
return(0); while (--count && *first && *first == *last)
{
first++;
last++;
} return( *(unsigned char *)first - *(unsigned char *)last );
}

C语言字符串库函数的实现的更多相关文章

  1. 5. 常见C语言字符串库函数的使用及实现

    1. strncat 函数: [函数原型]#include <string.h> char *strncat( char *str1, const char *str2, size_t c ...

  2. c语言字符串库函数#include<string.h>

    字符串函数<string.h> 在头文件<string.h>中定义了两组字符串函数.第一组函数的名字以str开头:第二组函数的名字以mem开头.只有函数memmove对重叠对象 ...

  3. C语言字符串操作常用库函数

    C语言字符串操作常用库函数 *********************************************************************************** 函数 ...

  4. C语言讲义——字符串库函数

    字符串库函数<string.h> 求字符串长度(不含结束符'\0'****) strlen(str) 字符串赋值(可能造成数组越界) strcpy(str," 水浒传 " ...

  5. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  6. C 语言字符串连接的 3种方式

    C 语言字符串连接的 3种方式 #include<stdio.h> #include<stdlib.h> #include<string.h> char *join ...

  7. C.【转】C语言字符串与数字相互转换

    1.gcvt 把浮点数转成字符串 - CSDN博客.html(https://blog.csdn.net/dxuehui/article/details/52791412) 1.1. 函数名: gcv ...

  8. C语言中库函数strstr的实现

    在C语言中库函数strstr()函数表示在一个字符串str1中查找另一个字符串str2,如果查到则返回str2在str1中首次出现的位置,如果找不到则返回null. char* strstr(char ...

  9. C语言字符串的操作

    C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. ...

随机推荐

  1. C++0x对局部静态初始化作出了线程安全的要求,singleton的写法可以回归到最原始的方式

    class Foo{public: staticFoo& instance(void) { static Foo s_instance; return s_instance; }}; 以下摘自 ...

  2. 关于android屏幕适配

    好吧 我承认被美工虐的够呛,而且美工他么是个男的!一点也不美, 废话不多说 急着赶路, 之前不怎么重视 直到遇见这个美工给我一套1080x1920的 图,没错 就一套 1dp=3px没错的啊 问题是就 ...

  3. 成为Web开发人员的7个简单步骤

    你想成为一名 Web 开发人员,但现在你面前有这样一个问题,那就是你没有在高科技行业工作的经验.你上了一些课程,也花了时间在个人编码项目上,但是你的简历上关于“经验”的部分仍然不为企业承认.过渡到一个 ...

  4. Hibernate(十)多对多单向关联映射

    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的 相关内容,这次我们继续多对多单向关联映射. 多对多单向关联映射 在讲解多对多单向关联映 射之前,首 ...

  5. 社区发现(Community Detection)算法 [转]

    作者: peghoty 出处: http://blog.csdn.net/peghoty/article/details/9286905 社区发现(Community Detection)算法用来发现 ...

  6. iOS设备的重力感应

    重力感应是每台iOS设备都具备的功能,所以在应用用好重力感应会有意想不到的效果 1.添加CoreMotion框架 2.在需要使用重力感应的类中添加头文件 #import <CoreMotion/ ...

  7. [转载]jQuery UI 使用

    最近项目中使用了一些插件来做页面,这里把jQuery UI的使用分享出来,希望 对新手有帮助.文章结尾附源码下载. 1     jQuery UI 2     为我所用 2.1     Tabs 2. ...

  8. Matlab编程-基本命令行语句

    (1) mathlab命令行中“,”与“:”的区别: 结尾不加任何东西也会输出结果 以“,”结尾不显示变量数值,但是再次输入变量名之后可以输出变量值 以“:”结尾显示变量值 (2)    输出格式控制 ...

  9. 安装 PLSQL笔记

    安装 PLSQL Developer 1. 下载PLSQL Developer 安装文件.安装文件类型是exe,直接安装就可以. 这个时候打开PLSQL Developer ,打开 help –> ...

  10. Individual Contest #1 and Private Training #1

    第一次的增补赛,也是第一场个人排位赛,讲道理打的和屎一样,手速题卡了好久还WA了好多发,难题又切不出来,这种情况是最尴尬的吧! Individual Contest #1: Ploblem D: 题意 ...