模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
来源:互联网 发布:主机屋mysql数据库地址 编辑:程序博客网 时间:2024/05/22 11:16
根据以上可知,在有的情况下,长度不受限制的字符串函数已经不能满足我们的需求,因此,便需要一些长度受限制的字符串函数,来满足我们的需要。
长度受限制的字符串函数,可以根据我们的需求,给指定的长度,从而完成我们的需求。
先看这些函数的原型:
char *strncat( char *strDest, const char *strSource, size_t count );
int strncmp( const char *string1, const char *string2, size_t count );
char *strncpy( char *strDest, const char *strSource, size_t count );
根据以上原型,现在模拟实现这些函数,从而加强对这些函数的理解。
**//strncat字符串追加**
char *my_strncat(char *pdest, const char *pstr, size_t n){ assert(pdest!= NULL); assert(pstr != NULL); char *ret = pdest; while (*pdest != '\0')//找目标空间的'\0' { pdest++; } while ((*pstr != '\0') && (n-->0))//拷贝字符串到目标空间 { *pdest = *pstr; *pdest++; *pstr++; } if (n-- < 0) { *pdest = 0; } return ret;}int main(){ char arr[20] = "hello "; char*p = "world"; my_strncat(arr, p,6); printf("%s\n", arr); system("pause"); return 0;}
**//模拟实现strncmp(字符串比较)**
int my_strncmp(const char *string1, const char *string2, size_t n){ assert(string1 != NULL); assert(string2 != NULL); while ((*string1 == *string2) && (n-- >= 0)) { string1++;//如果相等,则一直向后比较 string2++; } if ((*string1 != *string2)) { return *string1 - *string2; } //如果两者不相等,则利用ascll值返回}int main(){ char *arr1 = "abcdef"; char *arr2 = "abchdz"; int ret = my_strncmp(arr1, arr2,3); printf("%d\n", ret); system("pause"); return 0;}
**//模拟实现strncpy(字符串拷贝)**
char*my_strncpy(char* pdest, const char*psrc,size_t n){ char *ret = pdest; assert(pdest); assert(psrc); while ((*psrc != NULL) && n-->0) { *pdest = *psrc; pdest++; psrc++; } if (*psrc != NULL) { *pdest = 0; } return ret;}int main(){ int *arr = "abcdef"; int buf[20] = { 0 }; my_strncpy(buf, arr,2); printf("%s\n", buf); system("pause"); return 0;}
模拟实现库函数,不仅有利于我们对这些函数的理解,更有利用我们今后的学习。
阅读全文
1 0
- 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
- 模拟输出受限制的字符串函数-strncat,strncmp,strncpy
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现C语言strncpy.strncat.strncmp函数
- 【C语言】模拟实现strncpy、strncat、strncmp函数
- 【C语言】模拟实现strncpy strncat strncmp strchr strrchr函数
- 模拟实现 strncpy strncat strncmp strchr strrchr 函数
- C语言~模拟实现strncpy、strncat、strncmp函数
- 字符串函数模拟实现之strcpy、strncpy、strcmp、strncmp、strcat、strncat
- 模拟实现C库函数strncpy、strncat、strncmp
- 关于字符串函数的一些代码实现(strncpy strncat strncmp strchr strrchr)
- strncmp, strncat, strncpy函数的定义与实现
- 模拟实现strncpy ,模拟实现strncat ,模拟实现strncmp
- strncmp、strncpy、strncat、strlen库函数的实现
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- C语言中的内存泄漏与野指针
- Linux五种IO模型浅谈
- 面试题 51: 数组中重复的数字
- Openlayers3中实现地图的切割
- 关于QUARTUS调用modelsim仿真时出现的闪退问题解决
- 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
- poj3481(map的使用)Double Queue
- 关闭shadowsocks之后出现的浏览器无法联网
- NYOJ 1081 摆方格
- X-scan扫描器 直观扫描端口安全漏洞
- 设计模式(二)---多例
- 1008. 数组元素循环右移问题 --秒杀超简单方法
- 系统虚拟机的安装和管理
- 安装pycharm的详细步骤