string.h 函数的简单实现
2012-05-29 18:42
441 查看
c标准库中string.h头文件中几个函数的实现。参考了《C标准库》,用来交作业应该没什么大问题,但不保证没有bug。
标准库中原型:int strlen(const char *);
说明:返回字符串长度,不含'\0'。
实现:
int my_strlen(const char *s)
{
const char *t;
for(t = s; *t; t++)
;
return (t - s);
}
标准库中原型:char* strcpy(char* , const char *);
说明:复制字符串。
实现:
标准库中原型:char* strncpy(char* , const char * , int);
说明:复制字符串中n个字符。
实现:
标准库中原型:int strcmp(const char* , const char *);
说明:比较两个字符串。
实现:
标准库中原型:int strncmp(const char* , const char *, int );
说明:比较两个字符串的前n个字符。
实现:
标准库中原型:char* strcat(const char* , const char *);
说明:字符串连接。
实现:
标准库中原型:char* strncat(const char* , const char *, size_t);
说明:字符串连接。
实现:
标准库中原型:char* strchr(const char* , int c);
说明:从字符串开头开始,查找字符串中第一个字符c的位置,返回指向该位置的指针,若不存在则返回NULL。
实现:
标准库中原型:char* strrchr(const char* , int c);
说明:从字符串开头开始,查找字符串中第一个字符c的位置,返回指向该位置的指针,若不存在则返回NULL。
实现:
标准库中原型:char* strstr(const char* t, const char* s);
说明:在字符串t中,查找是否含有s的字串,若有返回该字串的地址,否则返回NULL
实现:
标准库中原型:void* memset(void* s, int c, int n);
说明:懒得说了
实现:
标准库中原型:void* memcpy(void* s, const void* t, int n);
说明:懒得说了
实现:
标准库中原型:void *memmove(void *, const void *, int n);
说明:
实现:
标准库中原型:int strlen(const char *);
说明:返回字符串长度,不含'\0'。
实现:
int my_strlen(const char *s)
{
const char *t;
for(t = s; *t; t++)
;
return (t - s);
}
标准库中原型:char* strcpy(char* , const char *);
说明:复制字符串。
实现:
char* my_strcpy(char *t, const char *s) { char *p = t; while (*t++ = *s++) ; return p; }
标准库中原型:char* strncpy(char* , const char * , int);
说明:复制字符串中n个字符。
实现:
char *my_strncpy(char *t, const char *s, int n) { char *p = t; for(n--; n && (*t++ = *s++); n--) ; *t = '\0'; return p; }
标准库中原型:int strcmp(const char* , const char *);
说明:比较两个字符串。
实现:
int my_strcmp(const char *s1, const char *s2) { while (*s1++ == *s2++) ; if (*s1 == '\0') return 0; else return (*s1 - *s2); }
标准库中原型:int strncmp(const char* , const char *, int );
说明:比较两个字符串的前n个字符。
实现:
int strncmp(const char *t, const char *s, int n) { for (n--; n && *t++ == *s++; n--) ; return *t - *s; }
标准库中原型:char* strcat(const char* , const char *);
说明:字符串连接。
实现:
char* my_strcat(char *t, char *s) { char *p = t; while (*t) t++; while (*t++ = *s++) ; return p; }
标准库中原型:char* strncat(const char* , const char *, size_t);
说明:字符串连接。
实现:
char* my_strncat(char *t, const char *s, size_t n) { char *p = t; while (*t) t++; while (n && (*t++ = *s++) n--; *t = '\0'; return p; }
标准库中原型:char* strchr(const char* , int c);
说明:从字符串开头开始,查找字符串中第一个字符c的位置,返回指向该位置的指针,若不存在则返回NULL。
实现:
char* my_strchr(const char *s, int c) { for (; *s != c; s++) if (*s == '\0') return NULL; return (char *)s; }
标准库中原型:char* strrchr(const char* , int c);
说明:从字符串开头开始,查找字符串中第一个字符c的位置,返回指向该位置的指针,若不存在则返回NULL。
实现:
char* my_strrchr(const char *s, int c) { const char *p = s + my_strlen(s); while (p >= s && *p != c) p--; if (p <= s) return NULL; else return (char*)p; }
标准库中原型:char* strstr(const char* t, const char* s);
说明:在字符串t中,查找是否含有s的字串,若有返回该字串的地址,否则返回NULL
实现:
char* my_strstr(const char* t, const char* s) { const char *p, *q; if (*s == '\0') return NULL; for (; *t; t++){ for (p = t, q = s; *p == *q; p++, q++) ; if (*q == '\0') return (char*)(t); } return NULL; }
标准库中原型:void* memset(void* s, int c, int n);
说明:懒得说了
实现:
void* my_memset(void* s, int c, int n) { char *p; for (p = s; n; n--) *p++ = c; return s; }
标准库中原型:void* memcpy(void* s, const void* t, int n);
说明:懒得说了
实现:
void* my_memcpy(void *s, const void *t, int n) { char *p; const char *q; for (p = s, q = t; n && (*p++ = *q++); n--) ; return s; }
标准库中原型:void *memmove(void *, const void *, int n);
说明:
实现:
void* my_memmove(void *t, const void *s, int n) { char *s1; const char *s2; s1 = t; s2 = s; if (s2 < s1 && s1 < s2+n) for (s1 += n, s2 += n; n; n--) *--s1 = *--s2; else for (; n; n--) *s1++ = *s2++; return t; }
相关文章推荐
- (更新)OutputDebugString函数简单封装,实现格式化打印输出(VC++)
- c++ string的一些常用函数的源码以及string的简单实现
- 简单模拟实现printf函数
- tchar 输入输出类 和 string 类 函数简单说明
- CG之refract函数简单实现
- PHP7扩展开发之实现简单运算函数
- JS中实现简单Formatter函数示例代码
- 函数的二义性与函数对象的传递问题(通过实现vector的to_string示例)
- 简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)
- 重载技巧+简单实现string和Vector
- 用最简单的函数实现功能:判断一个int数据是否是2的x次幂(不能使用循环)。
- 遗传算法的简单实现(1):求解函数最大值
- 一个简单求和函数的matlab实现(带程序耗时功能)
- strcasecmp函数简单实现
- string.h函数的实现
- JavaScript 数组(Array) sort 排序函数实现的简单高阶函数原理
- 简单东西-斐波那契函数实现
- LoadRunner lr_eval_string() 函数使用及LR中变量、参数的简单使用
- 编写一个函数reverse_string(char * string) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中的字符串操作函数。
- JS简单实现String转Date的方法