返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么用C语言实现常用字符串库函数
  • 924
分享到

怎么用C语言实现常用字符串库函数

2023-06-25 13:06:31 924人浏览 安东尼
摘要

本篇内容介绍了“怎么用C语言实现常用字符串库函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、实现memcpy将src所指向的内容拷贝到

本篇内容介绍了“怎么用C语言实现常用字符串库函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    一、实现memcpy

    将src所指向的内容拷贝到dst所指向的位置,拷贝len个字节。

    • memcpy是内存拷贝函数

    • memcpy在使用的时候不用考虑类型,以字节为单位进行拷贝

    • 遇到"\0"的时候不会停下,所以拷贝字符串的时候最好还是用strcpy,它更安全

    void *Mymemcpy(void * dst, const void * src, int len){void *ret = dst;assert(src);assert(dst);while (len--){*(char *)dst = *(char *)src;dst = (char *)dst + 1;src = (char *)src + 1;}return ret;}int main(){char str[100] = "ABCDE";Mymemcpy(str, str + 2, 2);printf("%s", str);system("pause");return 0;}

    怎么用C语言实现常用字符串库函数

    但是当我们修改了测试用例后发现了如下结果

    怎么用C语言实现常用字符串库函数

    出现这种情况的原因很简单,因为我们源字符串的首地址低于目标字符串的首地址,当我们默认从左向右拷贝的时候第一个字符串会覆盖第二个字符串,所以出现了全A的情况,这就是内存重叠拷贝,要解决这个问题非常简单,只需要在拷贝之前加一个判断,如果源字符串的首地址低于目标字符串的首地址则我们从右向左拷贝,这样就可以完美解决这个问题。

    二、memmove模拟实现

    这里我们重复刚才的测试用例,发现加入了判断并从右向左拷贝了之后没有出现全A的情况。

    void * Mymemmove(void * dst, const void *src, int len){char *_src = (char*)src;char *_dst = (char*)dst;if (_dst > _src&&_dst < _src + len){_dst = _dst + len - 1;_src = _src + len - 1;while (len--){*_dst = *_src;_dst--;_src--;}}else {while (len--){*_dst = *_src;_dst++;_src++;}}return dst;}int main(){char str[100] = "ABCDE";int len = strlen(str);memcpy(str+1, str , len);printf("%s", str);system("pause");return 0;}

    怎么用C语言实现常用字符串库函数

    三、strlen的模拟实现

     1.计数器方法:

    int Mystrlen(char * str){int count = 0;while (*str != 0){str++;count++;}return count;}int main(){char a[] = "dadai";int aa=Mystrlen(a);printf("%d", aa);system("pause");return 0;}

    2.递归方式:

    int Mystrlen(char * str){if (*str == '\0'){return 0;}else return (1 + Mystrlen(str + 1));}//1+1+1+1+1+0int main(){char a[] = "dadai";int aa=Mystrlen(a);printf("%d", aa);system("pause");return 0;}

    3.利用指针实现:

    int Mystrlen(char * str){char *p = str;while (*p){p++;}return (p - str);}int main(){char a[] = "dadai";int aa=Mystrlen(a);printf("%d", aa);system("pause");return 0;}

    四、strcpy的模拟实现

    将src所指向的内容拷贝到dst所指向的存储单元。

    char * Mycpy(char *dst, const char * src){assert(dst != NULL && src !=NULL);char *Mycpy = dst;while((*dst++ = *src++) != '\0');return Mycpy;}int main(){char src []= "daadok";char dst[10] ;Mycpy(dst, src);printf("%s", dst);system("pause");return 0;}

    五、strcmp的模拟实现

    strcmp用于比较两个字符串是否相等,若相等则返回0,若dst>src则返回1,否则换回-1.

    int Mystrcmp(const char* dst,const char * src){while (*dst&&*src&&(*dst == *src)){dst++;src++;}if (*dst > *src){return 1;}else if (*dst < *src){return -1;}else if (*dst == *src){return 0;}}int main(){char str1[] = "abcdefg";char str2[] = "dfd";int a=Mystrcmp(str1, str2);;printf("%d", a);system("pause");return 0;}

    六、strstr模拟实现

    在dst中找到第一次与src相等的位置并输出这个位置之后dst所指向的内容。

    char *mystrstr( const char *dst,const  char *src){assert(dst);assert(src);const char *p = dst;while (*p){const char *movep = p;const char *sp = src;while(*movep && *sp&& *sp== *movep){sp++;movep++;}if (*sp == '\0'){return (char *)p;}p++;}return NULL;}int main(){const char* dst = "abcd123456";const char*src = "cd";char *ret= mystrstr(dst, src);printf("%s", ret);system("pause");return 0;}

    怎么用C语言实现常用字符串库函数

    七、模拟实现strcat

    把src所指向的内容拼接到dst所指向内容的末尾。

    char * mystrcat(char*dst, const char*src){assert(src);assert(dst);char*ret = dst;while (*dst){dst++;}while (*src){*dst = *src;dst++; src++;}return ret;}int main(){char dst[64] = "abcd";char *src = "efg";mystrcat(dst, src);printf("%s", dst);system("pause");return 0;}

    怎么用C语言实现常用字符串库函数

    “怎么用C语言实现常用字符串库函数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

    --结束END--

    本文标题: 怎么用C语言实现常用字符串库函数

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

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

    猜你喜欢
    • 怎么用C语言实现常用字符串库函数
      本篇内容介绍了“怎么用C语言实现常用字符串库函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、实现memcpy将src所指向的内容拷贝到...
      99+
      2023-06-25
    • 实现C语言常用字符串库函数
      目录strlenstrcpystrcatstrcmp总结strlen 数组长度的计算是通过strlen来的,它的作用就是判断给定的数组元素个数,直到碰到\0结束 函数原型 siz...
      99+
      2024-04-02
    • C语言实现常用字符串库函数(推荐)
      目录一、实现memcpy二、memmove模拟实现三、strlen的模拟实现 1.计数器方法:2.递归方式:3.利用指针实现:四、strcpy的模拟实现五、strcmp的模...
      99+
      2024-04-02
    • C语言字符串函数怎么用
      这篇文章主要介绍C语言字符串函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.strlen函数模拟字符串以‘\0'作为结束标志,strlen函数返回的是在字符串中‘\0'前面出现的字符个数(...
      99+
      2023-06-22
    • C语言的字符函数和字符串函数怎么用
      这篇文章主要讲解了“C语言的字符函数和字符串函数怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言的字符函数和字符串函数怎么用”吧!一、字符&字符串函数1.strlen--求...
      99+
      2023-06-26
    • 【C语言】字符函数和字符串函数
      目录 一、函数介绍及其模拟实现 1.strlen 2.strcpy 3.strcat 4.strcmp  5.strncpy 6.strncat  7.strncmp 8.strstr  9.strtok 10.strerror   11....
      99+
      2023-09-15
      c语言 开发语言
    • C语言字符串函数与内存函数怎么用
      这篇“C语言字符串函数与内存函数怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言字符串函数与内存函数怎么用”文章吧...
      99+
      2023-06-30
    • c语言字符串转数字怎么实现
      在C语言中,可以使用标准库函数atoi()和atol()来将字符串转换为整数和长整数。具体实现如下: #include <st...
      99+
      2024-03-08
      c语言
    • C语言字符串函数,字符函数,内存函数使用及模拟实现
      目录求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找函数strstrst...
      99+
      2024-04-02
    • 怎么用C语言strlen函数实现读取字符串长度
      今天小编给大家分享一下怎么用C语言strlen函数实现读取字符串长度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、函数s...
      99+
      2023-06-30
    • C语言的字符串转换函数怎么用
      这篇“C语言的字符串转换函数怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言的字符串转换函数怎么用”文章吧。字符串...
      99+
      2023-06-29
    • c语言字符串替换函数怎么使用
      在C语言中,字符串替换函数通常使用strcpy()和strcat()函数来实现。下面是一个简单的示例: #include <s...
      99+
      2024-03-14
      c语言
    • C语言中字符串库函数的实现及模拟
      目录前言1.strlen的实现及模拟(求字符串长度)2.strcmp的实现及模拟 (字符串比较)3.strcpy的实现及模拟(字符串拷贝)4.strcat的实现及模拟(字符串追加)5...
      99+
      2022-11-13
      C语言字符串库函数 C语言字符串函数 C语言字符串
    • C语言字符串函数和内存函数怎么使用
      本文小编为大家详细介绍“C语言字符串函数和内存函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言字符串函数和内存函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。字符串函数长度不受限制的字...
      99+
      2023-06-30
    • C语言怎么封装函数字符串
      这篇文章主要讲解了“C语言怎么封装函数字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么封装函数字符串”吧!封装函数: 判断闰年和平年该函数判断传入的年份是否是闰年和平年,通过返...
      99+
      2023-06-29
    • C语言详细讲解常用字符串处理函数
      目录一、strlen()1. 函数原型:2. 手动实现:二、strcat()1. 函数原型:2. 手动实现:三、strcpy()1. 函数原型:2. 手动实现:四、strcmp()1...
      99+
      2024-04-02
    • C语言字符函数与字符串函数详解
      目录本章重点前言1.strlen函数注意点1注意点22.strcpy注意点1:注意点2:注意点3:注意点4:总结本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 1.求字符...
      99+
      2024-04-02
    • C语言:字符函数和字符串函数(一篇拿捏字符串函数!)
      目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. ...
      99+
      2023-10-02
      c语言 开发语言 深度学习 学习 笔记 c++ 算法
    • 带你用C语言实现strtok和字符串分割函数
      目录前言一、strtok的基本使用二、strtok的实现总结前言 字符串分割函数strtok,大家可能都知道他怎么使用,一旦要用的时候就会心生疑惑,不知道它的内部的实现,废话不多说,...
      99+
      2024-04-02
    • C语言中字符串怎么用
      小编给大家分享一下C语言中字符串怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!串的定义零个或多个字符组成的有限序列串的比较 串的比较实际上是在比较...
      99+
      2023-06-26
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作