实现自己的mystring.h

【面试题一的补充】C++ MyString类的封装 一,C++ MyString类的封装 阅读详情

把常用的字符串处理函数写了一遍,没有考虑地址重叠。

/**************************************************/

char* mystrcpy( char *destin, const char *source )
{
    if( destin == NULL ||  source == NULL )
    {
        return NULL;
    }
    
    char *addr = destin;

    while( ( *destin++ = *source++ )  != '\0' );

    return addr;
}


/**************************************************/

int mystrlen( const char *source )
{
    if( source == NULL  )
    {
        return 0;
    }

    int count = 0;

    while( *source++ != '\0' )
    {
        count++;
    }

    return count;
}
 

/**************************************************/

char* mystrncpy( char *destin,const char *source, int num )
{
    if( destin == NULL ||  source == NULL )
    {
        return NULL;
    }
    
    int limit = mystrlen( source );
    char *addr = destin;
    
    if( num > limit )
    {
        return NULL;
    }
    else
    {
        while( num-- )
	{
	    *destin++ = *source++;
	}
        
        *destin = '\0';

	return addr;
    }
}

/**************************************************/

char* mystrcat( char *destin, const char *source ) 
{
    if( destin == NULL ||  source == NULL )
    {
        return NULL;
    }

    char *addr = destin; 

    while( *destin++ != '\0' );

    destin--;

    while( ( *destin++ = *source++ )  != '\0' );

    return addr;
}

/**************************************************/

char* mystrchr( char *source, char ch )
{
    if( source == NULL )
    {
        return NULL;
    }

    while( *source != '\0' && ( *source++ != ch ) );
    
    return *source == '\0' ? NULL:--source;
}

/**************************************************/

int mystrcmp( const char *destin, const char *source )
{
    if( destin == NULL ||  source == NULL )
    {
        return destin - source;
    }
    
    while( *destin && *source && ( *destin++ == *source++ ) );
    
    return *( destin -1 ) != *( source -1 ) ? \
    *( destin-1 ) - *( source-1 ) : *destin - *source;
}

/**************************************************/

int mystrncmp( const char *destin, const char *source, int num )
{
    if( destin == NULL ||  source == NULL || num <= 0 )
    {
        return destin - source;
    }
 
    while( num-- > 0 && *destin && *source && ( *destin++ == *source++ ) );

    return  *( destin-1 ) != *( source-1 ) || \
            ( num == 0 && *destin && *source )  ? \
    *( destin-1 ) - *( source-1 ) : *destin - *source;        
//考虑当进行最后一次比较时,如果字符串有一个为结束符,那么实际没有进行++
}

/**************************************************/

char* mystrstr( const char *source, const char *destin )
{
    if( destin == NULL || source == NULL || \
    *destin == '\0' || *source == '\0' )
    {
        return NULL;
    }
    
    char *position = (char *)source;
    char *head = (char *)destin;

    while( *source )
    {
        position = (char *)source;
	    destin = head;

        while( *destin && *source && *destin++ == *source++ );
        
        if( *destin == '\0' && *( destin-1 ) == *( source-1 ) )
	    {
	    return position;
	    }

	    if( *source == '\0' )
	    { 
	        return NULL;
    	}

        source = position + 1 ;
    }
}


 

C语言 string.h 自己实现 看完了 谭浩强 的 《C程序设计(第四版)》 自己实现了 string.h 里面的大部分str开头的函数 立即下载

相关推荐

Xilinx FPGA 100G RDMA开发实战:基于AXI Lite配置的ROCE V2高速通信系统搭建

本文详细介绍了在Xilinx FPGA上搭建100G ROCE V2高速通信系统的实战过程。通过分析RDMA技术优势与FPGA实现的必要性,重点阐述了基于AXI Lite接口配置ERNIC IP核的关键步骤,包括硬件系统构建、驱动开发及与商用网卡的互通测试,旨在实现兼具高性能与灵活性的网络加速方案。

js777的博客 575

【C语言】c语言常用的几个函数源代码【strlen,strcpy,strcat,strstr】

【strlen】a'h'n's int my_strlen(const char *str)//测试字符字符串长度 { int count = 0; while (*str) { count++; str++; } return count; } int my_strlen1(const char *str)//应用递归测试字符串长度 { if (*str == '0') ...

csdn_baotai的博客 3824

Flutter + shorebird 热更新+自定义cdn下载

本文介绍了如何优化Flutter热更新方案Shorebird在国内网络环境下的使用体验。Shorebird默认使用海外CDN存在下载慢、连接不稳定等问题,建议将补丁包上传至国内CDN(如阿里云OSS)。文章详细讲解了Shorebird环境配置、项目集成、构建发布流程,并重点说明了如何修改客户端代码实现自定义补丁下载逻辑。通过替换默认下载器,将补丁下载地址指向国内CDN,可显著提升下载速度和稳定性。这种方案既保留了Shorebird的热更新能力,又解决了国内网络环境下的痛点,适合国内企业部署使用。

sir_Hu的博客 769

C++ MyString类的实现

功能要求: 功能1.0 初步实现MyString类(数据属性包括char*list,intlength(字符串长度)) 1.1. 实现构造函数(通过字符串初始化list) 1.2. 析构函数 1.3. 字符串拼接 1.4. 字符串比较大小(实现strcmp功能) 1.5. 子串查找 1.6. 提取某个位置字符 1.7. 输出。 功能2.0 2.1. 流输入>>和流输出<<运算符的重载 2.2. 重载 = 运算符 2.3. 重载 += 运算符 2...

han_lx_的博客 3325

从零构建:Trinamic API在STM32上的深度移植与TMC-IDE通信实战

本文详细介绍了如何从零开始在STM32平台上深度移植Trinamic API,并实现与TMC-IDE工具的稳定通信。内容涵盖SPI底层驱动定制、寄存器配置、高级功能实现及调试技巧,重点解析了TMC5160芯片的集成实践,帮助开发者构建可靠的嵌入式运动控制系统。

w1x2y3的博客 254

双轴按键摇杆模块原理与嵌入式驱动实战

双轴按键摇杆是一种融合模拟量(X/Y轴)与数字量(Z轴按键)的复合型人机交互传感器,其本质基于电位器分压原理与机械开关通断特性。通过ADC采集连续电压信号并结合数字IO检测按键状态,可实现高鲁棒性的二维运动感知与触发控制。该方案技术门槛低、成本可控、兼容性强,广泛应用于智能小车、DIY游戏手柄、工业HMI及教育开发板等嵌入式场景。文中深入解析电位器线性度、KEY引脚开漏特性、ADC参考电压稳定性及软件消抖状态机等关键工程要素,为基于Arduino、STM32或ESP32平台的快速集成提供可复用的技术路径。

weixin_30995917的博客 82

自己实现一个简单的string类

#include <iostream> #include <string.h> using namespace std; class String { char* str; public: String(const char* str) { if (NULL == str) { this->str = new char[1]; this-...

LokTar29的博客 298

PADS Layout新手必看:从元件摆放到地线处理的10个实用技巧

本文为PADS Layout新手提供了10个实用技巧,涵盖元件摆放、地线处理等关键环节。从功能模块化布局到高频信号处理,再到电磁兼容性设计,帮助初学者快速掌握PCB设计核心技能,提升Layout效率和质量。特别适合需要优化PADS Layout工作流程的设计师参考。

stone的博客 252

字符串常见操作及用法及c语言实现,建立自己的string.h库(一)

      说明:字符串是c语言中的一个重要知识点,其与指针的联系很大,是一个难点,熟练掌握字符串操作对学习c语言至关重要, 是很多重要操作的基础,所以我现在来总结一些一些库里面的函数以及实现方法,欢迎大家补充和改正! 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat...

Dachao0707的博客 504

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2088

063.CI/CD for ML:给YOLO项目装上自动化流水线

本文分享了为YOLO目标检测项目搭建CI/CD流水线的实践经验。作者通过手动调试模型导出问题的经历,意识到重复验证工作比模型改进更耗时,提出需要自动化解决方案。文章详细介绍了四阶段流水线设计:1)代码质量检查;2)快速训练验证;3)推理性能基准测试;4)模型注册部署。同时总结了环境不一致、GPU资源争抢等常见问题及解决方案,建议从简单规则开始逐步完善,强调模型版本管理的重要性。实施后不仅提高了效率,还促使团队形成更规范的开发习惯。

2603_95664987的博客 233

实现MyString类(一)—类声明mystring.h

题目背景      昨天师兄又出了道测试题,让我们实现类似于string类的没有MyString类,刚开始很头疼,可是真正在自己写代码的时候又很兴奋的发现,这个过程真的是个很宝贵的机会,让我又有机会可以很好的熟悉回顾C++的很多知识—类设计,构造析构函数,成员函数,友元函数,引用,重载,字符串操作,动态内存分布。。。。。于是昨天花了半天时间写了300多行代码,并认真的进行了相关测试、修改和总结。因为内容有点丰富,所以想分几次写出来,条理也清楚些。 类声明—mystring.h   1. 构造函数:     

fantasy 5610

qcc514x-qcc304x调试笔记

qcc514x-qcc304x调试笔记-1-QCC514x系列 qcc514x-qcc304x调试笔记-2-开发环境搭建 qcc514x-qcc304x调试笔记-3-如何修改蓝牙名称 qcc514x-qcc304x调试笔记-4-如何修改蓝牙地址 qcc514x-qcc304x调试笔记-5-如何区分左右耳 qcc514x-qcc304x调试笔记-6-PIO相关操作 ...

leezs的博客 1244

【C++】仿照string类,实现myString

【代码】【C++】仿照string类,实现myString。

m0_62859255的博客 491

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C++中简单自己实现一个string类

工具VS2017 MyString.h #pragma once #include<iostream> using namespace std; class MyString { friend ostream & operator<<(ostream &os, const MyString& s); friend istream & ...

Dxs4396的博客 4274

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

2024.8.29 作业

work3.cpp。

sdhdhdhdh的博客 911

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

9月2日 (∠・ω<)⌒☆

【代码】9月2日 (∠・ω<)⌒☆。

2302_80781346的博客 288

8月29日

mystring.h mystring.cpp main.cpp 结果

2302_80781346的博客 272

【C++学习之路】02.编写自己的String类!

三个重要函数:拷贝构造、拷贝赋值、析构函数。

外星人也想敲代码! 269

DAY4, C++(类中特殊的成员函数,运算符的重载,仿照string类,实现myString类)

类中特殊的成员函数,运算符的重载,仿照string类,实现myString类

weixin_46260677的博客 583

c++day4

仿照string ,实现mystring。

weixin_51064933的博客 137

9.23作业

【代码】9.23作业。

qq_62608227的博客 627

c 自定义实现string类 clear_「C++」 string类的实现

string 类的实现是一个经常考的面试题,主要考察运算符的重载以及内存管理,还有可以考察面试者的代码风格。这是我自己实现的一个简单的 string 类,有需要的可以参考。代码如下:1、mystring.h// 自定义 MyString 类#define _CRT_SECURE_NO_WARNINGS#pragma once#include using namespace std;class My...

weixin_39571219的博客 285

C++运算符重载实例化mystring

运算符重载 [],==,!=,>,<,>=,<=,+,=,+=,<<,>> mystring.h #ifndef MYSTRING_H #define MYSTRING_H #include <iostream> using namespace std; class MyString { public://构造 MyStr...

woshidage687的博客 381

嵌入式:C++ Day4

嵌入式:C++ Day4

jx4252的博客 385

c++ sting类实现

mystring.h #include <ostream> class MyString { public: MyString(const char *str = ""); MyString(const MyString &str); MyString& operator = (const MyString &r); MyString operator...

iamluping的博客 244
上一篇: 实现自己的myprintf
下一篇: 嵌入式 ntfs-3g 移植
zhouxf_cn
博客等级 码龄14年 54粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值