广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么用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://www.lsjlt.com/news/304933.html(转载时请注明来源链接)

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

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

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

    下载Word文档
    猜你喜欢
    • 怎么用C语言实现常用字符串库函数
      本篇内容介绍了“怎么用C语言实现常用字符串库函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、实现memcpy将src所指向的内容拷贝到...
      99+
      2023-06-25
    • 实现C语言常用字符串库函数
      目录strlenstrcpystrcatstrcmp总结strlen 数组长度的计算是通过strlen来的,它的作用就是判断给定的数组元素个数,直到碰到\0结束 函数原型 siz...
      99+
      2022-11-12
    • C语言实现常用字符串库函数(推荐)
      目录一、实现memcpy二、memmove模拟实现三、strlen的模拟实现 1.计数器方法:2.递归方式:3.利用指针实现:四、strcpy的模拟实现五、strcmp的模...
      99+
      2022-11-12
    • 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-30
    • C语言的字符串转换函数怎么用
      这篇“C语言的字符串转换函数怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言的字符串转换函数怎么用”文章吧。字符串...
      99+
      2023-06-29
    • C语言怎么封装函数字符串
      这篇文章主要讲解了“C语言怎么封装函数字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言怎么封装函数字符串”吧!封装函数: 判断闰年和平年该函数判断传入的年份是否是闰年和平年,通过返...
      99+
      2023-06-29
    • C语言字符串函数,字符函数,内存函数使用及模拟实现
      目录求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找函数strstrst...
      99+
      2022-11-13
    • 怎么用C语言strlen函数实现读取字符串长度
      今天小编给大家分享一下怎么用C语言strlen函数实现读取字符串长度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、函数s...
      99+
      2023-06-30
    • 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语言中字符串函数怎么入门,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实现字符串库函数功能有些时候我们可能会被限制无法使用库函数,这个时候我们需要编写自己的库函数。但了解了字符串库函数的功能之后,想...
      99+
      2023-06-22
    • C语言详细讲解常用字符串处理函数
      目录一、strlen()1. 函数原型:2. 手动实现:二、strcat()1. 函数原型:2. 手动实现:三、strcpy()1. 函数原型:2. 手动实现:四、strcmp()1...
      99+
      2022-11-13
    • C语言中字符串怎么用
      小编给大家分享一下C语言中字符串怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!串的定义零个或多个字符组成的有限序列串的比较 串的比较实际上是在比较...
      99+
      2023-06-26
    • 带你用C语言实现strtok和字符串分割函数
      目录前言一、strtok的基本使用二、strtok的实现总结前言 字符串分割函数strtok,大家可能都知道他怎么使用,一旦要用的时候就会心生疑惑,不知道它的内部的实现,废话不多说,...
      99+
      2022-11-12
    • C语言模拟实现字符串库函数的示例讲解
      目录字符串检验strlenstrcmpstrstr字符串操作strcpystrcat内存操作memcpymemmove字符串检验 strlen 函数原型 /// @brief 返回给...
      99+
      2023-01-13
      C语言字符串库函数 C语言字符串函数 C语言字符串
    • C语言详细分析常见字符串函数与模拟实现
      目录一. strlen(求长度)二. strcpy(拷贝)三.strcat(追加)四.strcmp五.strncpy六.strncat七.strncmp八.strstr 九...
      99+
      2022-11-13
    • C语言如何使用字符串处理函数
      这篇文章主要介绍了C语言如何使用字符串处理函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。strlen:1.计数器版本:#include<stdio.h>#in...
      99+
      2023-06-22
    • C语言实现字符串转浮点函数的示例
        字符串不仅可以转换为整数,也可以转换为浮点数,字符串转浮点数函数原型如下: float __cdecl __mingw_strtof (const ...
      99+
      2022-11-13
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作