[置顶] 【C语言】 实现strncpy,strncat,strncmp
2016-05-26 12:25
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
- [置顶] 【C语言】 实现memcmp
- [置顶] 【C语言】 实现memmove
- [置顶] 【C语言】 冒泡排序子例
- [置顶] 【C语言】 实现memcpy
- [置顶] 【C语言】 冒泡排序
- [置顶] 【C语言】 实现strcmp
- [置顶] 【C语言】 实现strncat
- [置顶] 【C语言】实现strcat
- [置顶] 【C语言】 实现strcpy
- [置顶] 【C语言】 实现strlen
- [置顶] 【C语言】 递归求非负数的每一位之和
- [置顶] 【C语言】 实现strstr
- [置顶] 【C语言】 字符串逆序
- [置顶] 【C语言】 二维数组中查找,杨氏矩阵
- [置顶] 【C语言】 左旋字符串
- [置顶] 【C语言】 提取子字符串
- [置顶] 【C语言】 求一个数的二进制反转后的值
- [置顶] 【C语言】求两数二进制序列不同的位
- [置顶] 【C语言】 棋盘游戏