几个 str 库函数源代码

简介:

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

}










本文转自 ye小灰灰  51CTO博客,原文链接:http://blog.51cto.com/10704527/1708936,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
编译器 C语言
C语言标准头文件 如何打印“hello,world”
C语言标准头文件 如何打印“hello,world”
|
6月前
|
算法 编译器 C语言
有关字符串的那些库函数
有关字符串的那些库函数
|
7月前
|
存储 Linux C语言
深入解析Linux环境下的sprintf()和printf()函数
在C语言中,`sprintf()`和`printf()`函数是用于格式化输出的两个重要函数。`sprintf()`函数将格式化的数据写入一个字符串,而`printf()`函数则将格式化的数据输出到标准输出。在Linux环境中,这两个函数被广泛应用于各种编程任务。本文将详细介绍这两个函数的用法,包括格式化字符串的语法和一些常见的使用场景。
262 1
|
8月前
|
C语言
C语言:字符串拷贝函数strcpy()
将 字符串1 的内容拷贝到 字符串2 中:strcpy(arr1,arr2) 注意:1.字符串1 的长度需要大于 字符串2 的长度(否则程序报错) 2.拷贝时会连同 ‘ \0 ’ 一起拷贝,字符串1 前面的内容会被覆盖,后面的内容不会被覆盖仍然存在,由于 ‘ \0 ’ 的存在,打印室并不会打印后面的内容
47 0
|
8月前
|
API C语言
利用strstr与atoi的结合实现一个C语言获取文件中数据的工具
利用strstr与atoi的结合实现一个C语言获取文件中数据的工具
37 0
|
9月前
|
编译器 C语言
【C语言进阶】字符函数及字符串函数,带你掌握核心用法并模拟实现(1)——strlen,strcpy,strcmp
【C语言进阶】字符函数及字符串函数,带你掌握核心用法并模拟实现(1)——strlen,strcpy,strcmp
94 1
|
10月前
|
C语言
C语言 --- sprintf用法
C语言 --- sprintf用法
70 0
|
11月前
|
编译器 C语言
C语言strlen,strcpy ,strcat, strcmp,strstr常用库函数的理解与模拟实现
C语言strlen,strcpy ,strcat, strcmp,strstr常用库函数的理解与模拟实现
103 0
|
12月前
|
C语言
初识C语言——为什么每个C程序都有一个main函数
初识C语言——为什么每个C程序都有一个main函数
168 0