字符串训练(二)模拟实现strstr strncpm strncat strncpy函数
来源:互联网 发布:cp1200写频软件下载 编辑:程序博客网 时间:2024/06/08 05:13
1、模拟实现strncat函数
//模拟实现strncat#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char * mystrncat(char *dest, const char *src, int n){char *destbak = dest;assert(NULL != dest && NULL != src );while ( '\0' != *dest){dest++;}while (n > 0 && ('\0' != *src)){*dest++ = *src++; //这句话放在while循环中,最后面也要加上*dest = '\0'这条语句。n--;}*dest = '\0';return destbak;}int main(){char array[100] = "hello world";char *p = "abcdef";mystrncat(array, p,10);printf("array = %s\n",array);printf("hello...\n");system("pause");return 0;}
2、模拟实现strncpy函数
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char * mystrncpy(char *dest, const char *src, int n){char *destbak = NULL;int i = 0;assert(NULL != dest && NULL != src);for (i = 0 ; i < n; i++) //从这可以看出当拷贝的字符数没有\0时,这个函数不会加上\0,所以使用这个函数要小心\0.{*dest = *src;if ('\0' == *src ){dest++;}else{dest++;src++;}}return destbak;}int main(){char array[100] = { 0 };char *p = "abcdef";mystrncpy(array, p,10);printf("array = %s\n",array);printf("hello...\n");system("pause");return 0;}
3、模拟实现strncmp函数
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>int mystrncmp(const char *str1, const char *str2, int n){assert(NULL != str1 && NULL != str2);while (n > 0 && *str1 == *str2){if ('\0' == *str1){return 0;}str1++;str2++;n--;}if (0 == n ){return 0;}if (*str1 > *str2){return 1;}elsereturn -1;}int main(){char *p = "abjdidfe";char *p2 = "abdidfe";int ret = 0;ret = strncmp(p,p2,3);if (0 == ret){printf("p1 = p2\n");}else if(ret > 0)printf("p1 > p2\n");else printf("p1 < p2\n");printf("hello...\n");system("pause");return 0;}
4、模拟实现strstr函数(两种方法)
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>//标志法char *mystrstr1(const char *string, const char *strCharSet){assert(NULL != string && NULL != strCharSet);if('\0' ==*strCharSet) //当要找的是空串的时候,特殊处理。{return (char *)string;}while ( '\0' != *string ){int flag = 1;const char *stringbak = string;const char *strCharSetbak = strCharSet;while ('\0' != *strCharSetbak){if (*stringbak != *strCharSetbak){flag = 0;break;}else{stringbak++;strCharSetbak++;}}if (1 == flag){return (char*)string;}string++;}return NULL;}//方法二:利用字符串的结束标志去写。char *mystrstr2(const char *string, const char *strCharSet){assert(NULL != string && NULL != strCharSet);if('\0' ==*strCharSet) //当要找的是空串的时候,特殊处理。{return (char *)string;}while ( '\0' != *string ){const char *stringbak = string;const char *strCharSetbak = strCharSet;/*while ('\0' != *strCharSetbak){if (*stringbak != *strCharSetbak){break;}else{stringbak++;strCharSetbak++;}}*/while (('\0' != *strCharSetbak) && (*stringbak == *strCharSetbak) ) //上面注释的简洁版本。{stringbak++;strCharSetbak++;}if ('\0' == *strCharSetbak){return (char*)string;}string++;}return NULL;}int main(){char *p1 = "abbcdef";char *p2 = "bbc";printf("p2 = %s\n",mystrstr1(p1,p2));printf("p2 = %s\n",mystrstr2(p1,p2));printf("hello...\n");system("pause");return 0;}
0 0
- 字符串训练(二)模拟实现strstr strncpm strncat strncpy函数
- C语言模拟实现strncpy、strncpy、strncat、strstr和strrstr函数实现
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- 模拟实现长度受限制的字符串函数(strncpy、strncat、strncmp)
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- 字符串函数模拟实现之strcpy、strncpy、strcmp、strncmp、strcat、strncat
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟实现strncpy,strncat,strncmp
- 模拟输出受限制的字符串函数-strncat,strncmp,strncpy
- 模拟实现C语言strncpy.strncat.strncmp函数
- 【C语言】模拟实现strncpy、strncat、strncmp函数
- 【C语言】模拟实现strncpy strncat strncmp strchr strrchr函数
- 模拟实现 strncpy strncat strncmp strchr strrchr 函数
- C语言~模拟实现strncpy、strncat、strncmp函数
- [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr
- XMLHttpRequest2级
- HDU 2094 产生冠军
- 冒泡排序
- 模板消息
- centos 同步外网源到本地
- 字符串训练(二)模拟实现strstr strncpm strncat strncpy函数
- OpenStack Glance 之paste
- 让Apache的commons-net-3.3中的FTPClient支持中文
- 规律题_1
- EXT.NET MVC5 工作随笔08 关于前台上传多个图片和单个图片的写法
- hdu 5795 A Simple Nim
- 六度分离
- 浅谈微信卡券功能开发(1)
- vmstat命令的输出解释