iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么仿写C语言string.h头文件检验字符串函数
  • 611
分享到

怎么仿写C语言string.h头文件检验字符串函数

2023-06-25 14:06:20 611人浏览 薄情痞子
摘要

这篇文章主要讲解了“怎么仿写C语言string.h头文件检验字符串函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么仿写C语言string.h头文件检验字符串函数”吧!c语言string

这篇文章主要讲解了“怎么仿写C语言string.h头文件检验字符串函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么仿写C语言string.h头文件检验字符串函数”吧!

    c语言string.h头文件字符串检验函数仿写

    所需头文件:stdio.h ,stdlib.h, string.h

    strlen字符串求长度

    int strlen_my(const char* src_str){ if (NULL == src_str){return -1;}const char* p = src_str;while (*p != '\0'){p++;}return p - &(src_str[0]);}//递归int strlen_my2(const char* src_str){if (src_str == NULL)return -1;if (*src_str){return strlen_my2(src_str + 1) + 1;}else{return 0;}} int main(){const char* p = "hello";printf("%d \n",strlen_my(p));return 0;}

    strcmp / strncmp字符串比较

    int strcmp_my(const char* str_a, const char* str_b){while ((*str_a != '\0' || *str_b != '\0') && *str_a == *str_b ){str_a++;str_b++;} return *str_a - *str_b > 0 ? 1 : (*str_a - * str_b < 0 ? -1 : 0);}int strcmp_my2(const char* str_a, const char* str_b){int sub = 0;while ((sub = *str_a - *str_b) == 0 && *str_a++ && *str_b++);//先赋值,指针再++ return sub > 0 ? 1 : (sub < 0 ? -1 : 0);} int strncmp_my(const char* str_a, const char* str_b, size_t front_len){while (--front_len && *str_a != '\0' && *str_b != '\0' && *str_a == *str_b){str_a++;str_b++;} return *str_a - *str_b > 0 ? 1 : (*str_a - *str_b < 0 ? -1 : 0);} int main(){const char* p = "hella";const char* q = "hell";printf("%d \n", strncmp_my(p, q, 4));return 0;}

    strchr / strrchr 字符串中查找字符ch

    第一个出现的字符ch

    //strchr 返回字符串中第一个出现的字符chchar* strchr_my(const char* src_str, char ch){if (src_str == NULL){return NULL;} while (*src_str != '\0' && *src_str != ch){src_str++;} return *src_str == '\0' ? NULL : src_str;} int main(){const char* p = "hello";p = strchr_my(p, 'e');if (p == NULL)return 0;printf("%c\n", *p);}

    最后一个出现的字符ch

    //strrchr查找字符串中最后一个出现的字母chchar* strrchr_my(const char* src_str, char ch){if (NULL == src_str) return NULL;const char* p = src_str + strlen(src_str) - 1; while ((p - src_str) >= 0 && *p != ch){p--;}if (p - src_str == -1){return NULL;}return p;} int main(){const char* p = "hello";//p = strchr_my(p, 'q'); p = strrchr_my(p, 'l');if (p == NULL)return 0;printf("%c\n", *p);}

    strstr 字符串匹配:src_str中查找des_str,返回匹配的起始位置,没有为NULL(BF算法

    char* strstr_my(const char* src_str, const char* des_str){if (NULL == src_str || NULL == des_str){return NULL;} int len_src = strlen(src_str);int len_des = strlen(des_str);int i = 0;//src_strint j = 0;//des_str while (i < len_src && j < len_des){if (src_str[i] == des_str[j]){i++;j++;}else{i = i - j + 1;j = 0;}} if (j == len_des){return src_str + i - j;}return NULL;} int main(){const char* p = "hello";const char* q = "llo";const char* rt = strstr_my(p, q);if (rt != NULL){printf("%s\n", rt);return 0;}return 0;}

    strcpy / strncpy字符串拷贝

    char* strcpy_my(char* des_str, const char* src_str){if (des_str == NULL || src_str == NULL)return NULL;char* p = des_str;while (*src_str != '\0'){*p++ = *src_str++;}*p = '\0';return des_str;} char* strncpy_my(char* des_str, const char* src_str, size_t len){if (des_str == NULL || src_str == NULL || len <= 0)return NULL;char* p = des_str;//源字符串实际长度int cur_len = strlen(src_str) <= len ? len : strlen(src_str); while (cur_len--){*p++ = *src_str++;}*p = '\0';return des_str;} int main(){const char* p = "hello";char q[10] = {0}; if (strncpy_my(q, p, 1) != NULL){printf("%s\n", q);} return 0;}

    strcat / strncat字符串的粘贴

    char* strcat_my(char* des_str, const char* src_str){if (des_str == NULL || src_str == NULL)return NULL;int len_des = strlen(des_str);char* p = des_str + len_des; while (*src_str != '\0'){*p++ = *src_str++;}return des_str;} char* strncat_my(char* des_str, const char* src_str, size_t len){if (des_str == NULL || src_str == NULL || len < 0)return NULL;int len_des = strlen(des_str);char* p = des_str + len_des; while (len--){*p++ = *src_str++;}return des_str;} int main(){char p[20] = "hello";const char* q = "world";printf("p = %s\n", p);printf("q = %s\n", q);if (strncat_my(p, q, 3) != NULL) {printf("p = %s\n", p);}printf("q = %s\n", q);return 0;}

    strdup 字符串申请堆区空间存放字符串的副本

    char* strdup_my(const char* src_str){if (NULL == src_str)return NULL;char* newspace = (char*)malloc((strlen(src_str) + 1 ) * sizeof(char));if (newspace == NULL)return NULL;int i = 0;while (*src_str != '\0'){newspace[i++] = *src_str++;}newspace[i] = '\0';return newspace;}int main(){const char* p = "hello";char* q = strdup_my(p);if (q != NULL){printf("%s\n", q);free(q);q == NULL;}return 0;}

    感谢各位的阅读,以上就是“怎么仿写C语言string.h头文件检验字符串函数”的内容了,经过本文的学习后,相信大家对怎么仿写C语言string.h头文件检验字符串函数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: 怎么仿写C语言string.h头文件检验字符串函数

    本文链接: https://www.lsjlt.com/news/305470.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 仿写C语言string.h头文件检验字符串函数
      目录c语言string.h头文件字符串检验函数仿写strlen字符串求长度strcmp / strncmp字符串比较strchr / strrchr 字符串中查找字符ch第一个出现的...
      99+
      2022-11-12
    • 怎么仿写C语言string.h头文件检验字符串函数
      这篇文章主要讲解了“怎么仿写C语言string.h头文件检验字符串函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么仿写C语言string.h头文件检验字符串函数”吧!c语言string...
      99+
      2023-06-25
    • C语言字符串函数怎么用
      这篇文章主要介绍C语言字符串函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.strlen函数模拟字符串以‘\0'作为结束标志,strlen函数返回的是在字符串中‘\0'前面出现的字符个数(...
      99+
      2023-06-22
    • C语言的字符函数和字符串函数怎么用
      这篇文章主要讲解了“C语言的字符函数和字符串函数怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言的字符函数和字符串函数怎么用”吧!一、字符&字符串函数1.strlen--求...
      99+
      2023-06-26
    • C语言怎么封装函数字符串
      这篇文章主要讲解了“C语言怎么封装函数字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么封装函数字符串”吧!封装函数: 判断闰年和平年该函数判断传入的年份是否是闰年和平年,通过返...
      99+
      2023-06-29
    • C语言中字符串函数怎么入门
      这篇文章给大家介绍C语言中字符串函数怎么入门,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现字符串库函数功能有些时候我们可能会被限制无法使用库函数,这个时候我们需要编写自己的库函数。但了解了字符串库函数的功能之后,想...
      99+
      2023-06-22
    • C语言字符串函数与内存函数怎么用
      这篇“C语言字符串函数与内存函数怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言字符串函数与内存函数怎么用”文章吧...
      99+
      2023-06-30
    • C语言的字符串转换函数怎么用
      这篇“C语言的字符串转换函数怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言的字符串转换函数怎么用”文章吧。字符串...
      99+
      2023-06-29
    • C语言字符串函数和内存函数怎么使用
      本文小编为大家详细介绍“C语言字符串函数和内存函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言字符串函数和内存函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。字符串函数长度不受限制的字...
      99+
      2023-06-30
    • 怎么用C语言实现常用字符串库函数
      本篇内容介绍了“怎么用C语言实现常用字符串库函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、实现memcpy将src所指向的内容拷贝到...
      99+
      2023-06-25
    • 怎么使用C语言函数将字符转为大写或小写
      这篇文章主要介绍“怎么使用C语言函数将字符转为大写或小写”,在日常操作中,相信很多人在怎么使用C语言函数将字符转为大写或小写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用C语言函数将字符转为大写或小写...
      99+
      2023-06-17
    • 怎么用C语言strlen函数实现读取字符串长度
      今天小编给大家分享一下怎么用C语言strlen函数实现读取字符串长度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、函数s...
      99+
      2023-06-30
    • 怎么使用C语言将数字和字符等数据写入并输出到文本文件中
      这篇文章主要介绍“怎么使用C语言将数字和字符等数据写入并输出到文本文件中”,在日常操作中,相信很多人在怎么使用C语言将数字和字符等数据写入并输出到文本文件中问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使...
      99+
      2023-07-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作