调用字符串库函数c语言,C语言字符串库函数的实现

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 );

}

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

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

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

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

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

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

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

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

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

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

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

C 语言字符串连接的 3种方式 #include #include #include char *join ...

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

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

C语言中库函数strstr的实现

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

C语言字符串的操作

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

随机推荐

Servlet-中文乱码

背景 从Tomcat5.x开始,GET,POST方法提交信息,Tomcat采用不同的方式来处理编码. 对于GET请求,Tomcat不会考虑使用request.setCharacterEncoding( ...

C语言动态存储分配

动态存储分配 C语言支持动态存储分配,即在程序执行期间分配内存单元的能力,利用动态存储分配,可以根据需要设计扩大(或缩小)的数据结构,虽然可以适用于所有类型的数据,但是动态存储分配更常用于字符串.数组 ...

[Swust OJ 166]--方程的解数(hash法)

题目链接:http://acm.swust.edu.cn/problem/0166/ Time limit(ms): 5000 Memory limit(kb): 65535   有如下方程组: A1 ...

iOS 6 Passbook 入门 1/2

http://www.raywenderlich.com/zh-hans/23066/ios-6-passbook-%E5%85%A5%E9%97%A8-12 iOS 6 Passbook 入门 1/ ...

IP头、TCP头、UDP头详解以及定义

一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/typedef struct _MAC_FRAME_HEADER{ char m_cDstMacAddress[6];    //目的m ...

如何搞定SVN目录的cleanup问题和lock问题

最近在使用SVN的时候碰到一个问题,就是操作时由于粗心大意,在更新的过程中点击取消,使得该目录出现cleanup的操作提示. OK,按照cleanup提示操作后,又提示目录被lock... 网上有解决 ...

NOIP刷题建议(未完结)

1NOIP提高组真题 2NOI部分题目 为什么要写这个? 主要是一个人在硕大的机房里打(wan)代(you)码(xi),没多少时间了,所以打算来总结一下. 这个也是为我接下来冲刺做一个准备. 这个会不 ...

[转]Request Flow for Provisioning Instance in Openstack

One of the most important use-case in any cloud is provisioning a VM . In this article we shall do ...

jquery.pjax 单页面, 无刷新打开页面.

介绍: pushState+ajax=pjax 工作原理: 什么是pjax? 现在很多网站(facebook, twitter)都支持这样的一种浏览方式, 当你点击一个站内的链接的时候, 不是做页面跳 ...

垃圾收集器(GC)

堆分区:所有new的对象都会存放在堆中      > 新生代(Young Generation):存放生命周期短的对象,具体还分为Eden和Survivor两个区,其中Survivor分为Fro ...

你可能感兴趣的:(调用字符串库函数c语言)