几个 str 库函数源代码
2015-11-02 19:25
489 查看
#include<stdio.h>
#include<assert.h>
char *my_strcat(char *dst,const char *src)
{
char *cp = dst;
assert(dst);
assert(src);
while(*cp)
{
cp++;
}
while(*cp++ = *src++)
{
;
}
return dst;
}
char strncat(char *front,const char *back,int count)
{
char *start = front;
assert(front);
assert(back);
while(*front)
{
front++;
}
while(count--)
{
if(!(*front++ = *back++))//判断是否到back的末尾!
{ //当遇到0就返回的就在条件前面加"!"
return start;
}
}
*front = '\0';
return start;
}
int strcmp(const char *src,const char *dst)
{
int ret = 0;
assert(src);
assert(dst);
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
{
src++;
dst++;
}
return ret;
}
int strncmp(const char *first,const char *last,int count)//compare first n characters of two strings
{
assert(first);
assert(last);
if(!count)
{
return 0;
}
while(--count && *first && *first == *last)
{
first++;
last++;
}
return (*(unsigned char *)first - *(unsigned char *)last);
}
int strlen(const char *str)
{
const char *eos = str;
assert(str);
while(*eos++)
{
;
}
return ((int)(eos - str - 1));//指针减指针为它们之间的元素个数
}
char * strncpy(char *dst,const char *src,int count)
{
char *start = dst;
assert(dst);
assert(src);
while(count-- && (*dst = *src))
{
;
}
if(count)
{
while(--count)
{
*dest++ = '\0';
}
}
return start;
}
char *strcpy(char *dst,const char *src)
{
char *start = dst;
assert(dst);
assert(src);
while(*dst++ = *src++)
{
;
}
return start;
}
#include<assert.h>
char *my_strcat(char *dst,const char *src)
{
char *cp = dst;
assert(dst);
assert(src);
while(*cp)
{
cp++;
}
while(*cp++ = *src++)
{
;
}
return dst;
}
char strncat(char *front,const char *back,int count)
{
char *start = front;
assert(front);
assert(back);
while(*front)
{
front++;
}
while(count--)
{
if(!(*front++ = *back++))//判断是否到back的末尾!
{ //当遇到0就返回的就在条件前面加"!"
return start;
}
}
*front = '\0';
return start;
}
int strcmp(const char *src,const char *dst)
{
int ret = 0;
assert(src);
assert(dst);
while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
{
src++;
dst++;
}
return ret;
}
int strncmp(const char *first,const char *last,int count)//compare first n characters of two strings
{
assert(first);
assert(last);
if(!count)
{
return 0;
}
while(--count && *first && *first == *last)
{
first++;
last++;
}
return (*(unsigned char *)first - *(unsigned char *)last);
}
int strlen(const char *str)
{
const char *eos = str;
assert(str);
while(*eos++)
{
;
}
return ((int)(eos - str - 1));//指针减指针为它们之间的元素个数
}
char * strncpy(char *dst,const char *src,int count)
{
char *start = dst;
assert(dst);
assert(src);
while(count-- && (*dst = *src))
{
;
}
if(count)
{
while(--count)
{
*dest++ = '\0';
}
}
return start;
}
char *strcpy(char *dst,const char *src)
{
char *start = dst;
assert(dst);
assert(src);
while(*dst++ = *src++)
{
;
}
return start;
}
相关文章推荐
- C++11新版本
- Spring MVC 教程,快速入门,深入分析
- Spring @Transactional 如何开启事务
- torch.gt函数的用法
- Spark(Hive) SQL中UDF的使用(Python)
- 2015/11/2用Python写游戏,pygame入门(2):游戏中的事件和显示
- C++ 宏定义动态加载、工厂模式
- ubuntu安装配置jdk
- AbstractList 抽象类 源代码
- 判断一个字符串是否为另一个字符串旋转之后的字符串
- 利用C++优势快速打完最长不下降子序列
- java线程的实现
- 魔法物品(magic.pas/c/cpp)
- java--xiti
- gitHub管理代码
- C#中的yield关键字
- java课堂动手动脑博客
- c++11获取智能指针字符串地址
- C语言实现左旋字符串
- 把Eclipse修改为黑色主题!配色方案详细图文并茂可供下载!