字符串训练(一)模拟实现strlen,strcmp,strcpy,strcat函数
来源:互联网 发布:js对svg放大缩小拖拽 编辑:程序博客网 时间:2024/05/16 05:29
1、模拟实现strlen函数(计数器实现,两个指针相减,递归实现)
//模拟实现strlen#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>//方法一:计数器实现 int my_strlen1(const char * str){int len = 0;assert(NULL != str);while (*str++ != '\0'){len++;}return len;} //方法二:两个指针相减 int my_strlen2(const char * str) {const char *strbak = NULL; assert(NULL != str); strbak = str; while (*str++ != '\0') {NULL; } //while循环后str指向\0后面的那个字符。 return(str-1-strbak); } //方法三用递归实现。 int my_strlen3(const char * str) { assert(NULL != str); if ('\0' == *str ) { return 0; } else return (1+my_strlen3(str+1)); }int main(){char array[20] = "abcdef";printf("len = %d\n",my_strlen1(array));printf("len = %d\n",my_strlen2(array));printf("len = %d\n",my_strlen3(array));printf("hello...\n");system("pause");return 0;}
2、模拟实现strcpy函数
//模拟实现strcpy函数#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char *mystrcpy(char *dest, const char *src){char *destbak = NULL;assert(NULL != dest && NULL != src);/*while ('\0' != *src){*dest++ = *src++;}*dest = '\0';*/ //可以简化成下面的形式while ((*dest++ = *src++) ){NULL;}return destbak;}int main(){char array[100] = { 0 };char *p = "abcdef";mystrcpy(array, p);printf("array = %s\n",array);printf("hello...\n");system("pause");return 0;}
3、模拟实现strcat函数
//模拟实现strcat函数#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>char * mystrcat(char *dest, const char *src){char *destbak = dest;assert(NULL != dest && NULL != src);while ( '\0' != *dest){dest++;}while (*dest++ = *src++){NULL;}return destbak;}int main(){char array[100] = "hello world";char *p = "abcdef";mystrcat(array, p);printf("array = %s\n",array);printf("hello...\n");system("pause");return 0;}
4、模拟实现strcmp函数(两种方法)
//模拟实现strcmp#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<assert.h>//方法一int mystrcmp1(const char *str1, const char *str2){assert(NULL != str1 && NULL != str2);while ( '\0' != *str1 || '\0' != *str2 ){if (*str1 > *str2){return 1;}if (*str1 < *str2){return -1;}str1++;str2++;}if ('\0' == *str1 && '\0' == *str2){return 0;}}//方法二int mystrcmp2(const char *str1, const char *str2){assert(NULL != str1 && NULL != str2);while (*str1 == *str2){if ('\0' == *str1){return 0;}str1++;str2++;}if (*str1 > *str2){return 1;}elsereturn -1;}int main(){char *p = "abjdidfe";char *p2 = "dfjie";int ret = 0;ret = mystrcmp1(p,p2);if (0 == ret){printf("p1 = p2\n");}else if(ret > 0)printf("p1 > p2\n");else printf("p1 < p2\n");ret = mystrcmp2(p,p2);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;}
0 0
- 字符串训练(一)模拟实现strlen,strcmp,strcpy,strcat函数
- 模拟实现strlen、strcpy、strcat、strcmp函数
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- C语言:模拟实现strlen、strcpy、strcmp、strReverse、strcat函数
- 模拟实现strlen/strcpy/strcat/strcmp/strstr/strchr/函数
- 【C语言】、模拟实现strlen,strcmp,strcpy,strcat,strstr函数
- 模拟实现strcpy,strcmp,strstr,strncpy,strncmp,strcat,strlen函数
- 模拟实现strlen,strcpy,strcat,strstr,strcmp函数
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 模拟实现strlen、strcpy、strncpy、strcat、strcmp
- 模拟实现strcpy,strcmp,strcat,strstr.strlen
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- strlen, strcpy, strcat, strcmp, memset... (字符串操作函数的实现)
- 字符串函数strcat, strcpy, strcmp, strlen实现模型
- 自定义字符串函数:strlen,strcat,strcpy,strcmp
- 自定义字符串函数:strlen,strcat,strcpy,strcmp
- 字符串处理函数(strlen, strcmp, strcat, strcpy)
- VLC unable to open the mrl
- 图灵停机问题(The Halting Problem)
- Android图片特效处理(像素处理)
- ES增删改查入门1
- Java 实例 - 队列(Queue)入门用法
- 字符串训练(一)模拟实现strlen,strcmp,strcpy,strcat函数
- Android AIDL注意事项(5.0以上)
- css背景
- 一步一步走进Linux HOOK API(四)
- 探索Android Material Design 中的Tint(着色)
- css表格
- jquery datatable显示隐藏子表
- python中的signal.set_wakeup_fd的理解
- java面向对象编程的4个特征以及重写重载的区别