【C语言】 实现strncpy,strncat,strncmp
2015-11-21 17:14
513 查看
//strncpy 与strcpy无异,只是拷贝的块大小不一样,strncpy只是向后拷贝n个字节的内容 #include<stdio.h> #include<assert.h> char *my_strncpy(char *dest,const char *src,size_t n) { char *ret = dest; assert(dest); assert(src); while(n--) // 用字节数n控制循环的次数 { *dest++ = *src++; } return dest; } int main() { char str1[] = "abcdef"; char str2[10] = {0}; my_strncpy(str2,str1,3); printf("%s\n",str2); return 0; } //strncat 与strcat无异,只是追加的块大小不一样,strncat只是向后追加n个字节的内容 #include<stdio.h> #include<assert.h> char *my_strncat(char *dest,const char *src,size_t n) { char *ret = dest; assert(dest); assert(src); while(*dest) { dest++; } while(n--) { *dest++ = *src++; } *dest = '\0'; return dest; } int main() { char str1[] = "abcd"; char str2[] = "efgh"; my_strncat(str1,str2,3); printf("%s\n",str1); return 0; } //strncmp 与strcmp无异,只是比较的块大小不一样,strncmp只是向后比较n个字节的内容 #include<stdio.h> #include<assert.h> int *my_strncmp(const char *dest,const char *src,size_t n) { int ret = 0; assert(dest); assert(src); while(n--) { if(!(ret = *(unsigned char *)dest - *(unsigned char *)src)) { dest++; src++; } } if(ret < 0) ret = -1; else if(ret > 0) ret = 1; return ret; } int main() { char str1[] = "abcdef"; char str2[] = "abcd"; printf("%d\n",my_strncmp(str1,str2,3)); return 0; }
本文出自 “Vs吕小布” 博客,谢绝转载!
相关文章推荐
- C语言模拟实现memset.memcmp函数
- c语言:给十个整数比较大小
- c语言:4种方法;交换两个整数的位置(包括引入第三方变量和不引入第三方变量)
- c语言:2种方法;求两个整数之中的较大者
- C语言实验——单词统计
- 浅谈C语言中如何取随机数
- C语言:求两个整数之和
- 模拟实现C语言strncpy.strncat.strncmp函数
- C语言:在屏幕上输出信息
- C++学习笔记26——泛型算法之容器元素排序(sort unique)
- C语言读取文件的内容
- C++ 11 auto & decltype
- c++任意数字转换为字符串
- c++11线程管理,RAII方式等待异常环境下线程结束
- C语言简单实现接口
- 002--VS C++ 获取鼠标坐标并显示在窗口上
- C++ this 指针
- 关于C++中的引用传递
- 关于C语言0x01
- c语言栈的应用之括号匹配问题