当前位置: 首页 > news >正文

面试基础_03实现strcpy、strcat、strcmp、strlen


实现代码例如以下:

/************************************************************************* 
    > File Name: testString.h
    > Author: qiaozp 
    > Mail: qiaozongpeng@163.com 
    > Created Time: 2014-9-30 11:21:15
 ************************************************************************/ 
#include <iostream>
#include <string.h>
using namespace std;

//实现字符串拷贝
char* _strcpy(char* src, char* dst)
{
    if (src == NULL)
    {
        return NULL;
    }
    char* tmp = src;
    int i = 0;
    while (*tmp)
    {
        dst[i++] = *(tmp++);
    }
    dst[i] = '\0';
    return dst;
}

//实现字符串追加
char* _strcat(char* dst, char* src)
{
    if (src == NULL)
    {
        return NULL;
    }

    char* tmp = src;
    int pos = strlen(dst);
    while (*tmp)
    {
        dst[pos++] = *(tmp++);
    }
    dst[pos] = '\0';

    return dst;
}

//实现获取字符串长度
int _strlen(char* sz)
{
    char* tmp = sz;
    int i = 0;
    while (*tmp)
    {
        ++i;
        ++tmp;
    }
    return i;
}

//实现字符串比較
int _strcmp(char* srcA, char* srcB)
{
    char* cmpA = srcA;
    char* cmpB = srcB;
    //1 按位比較大小
    while ((*cmpA) && (*cmpB))
    {
        if (*cmpA = *cmpB)
        {
            ++cmpA;
            ++cmpB;
            continue;
        }
        else if (*cmpA > *cmpB)
        {
            return 1;
        }
        else
        {
            return -1;
        }
    }
    
    //2 比較长度
    return _strlen(srcA) - _strlen(srcB);
}

int main()
{
    char* p = "you are a student.";
    char e[30] = {0};
    if (_strcpy(p, e) == NULL)
    {
        return -1;
    }
    cout << "拷贝后的字符串:" << e << endl;


    if (_strcat(e, "name : qiao") == NULL)
    {
        return -1;
    }
    cout << "追加后的字符串:" << e << endl;

    cout << _strlen(p) << endl;

    cout << _strcmp("qiao", "qiap") << endl;
}


转载于:https://www.cnblogs.com/liguangsunls/p/6943561.html

相关文章:

  • Python学习之路12☞模块与包
  • 移动端页面的适配
  • Sql 列转行字符串
  • 团队冲刺阶段二(八)
  • Oracle解锁scott账户
  • SonarQube Scanner的配置与使用简介
  • 深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow
  • JAVA EE Demo[购物商城 Strust2]
  • java之内部类
  • html5 Web Workers.RP
  • TensorFlow 生成 .ckpt 和 .pb
  • salesforce 简单的PDF报价单打印
  • 1.8 Oracle 登陆时报错信息:无监听程序 我的程序猿之路:第八章
  • [BZOJ 2142]礼物(扩展Lucas定理)
  • iOS UISlider的使用
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • gops —— Go 程序诊断分析工具
  • js中的正则表达式入门
  • maven工程打包jar以及java jar命令的classpath使用
  • Python利用正则抓取网页内容保存到本地
  • Spring Cloud中负载均衡器概览
  • 分类模型——Logistics Regression
  • 高度不固定时垂直居中
  • 后端_MYSQL
  • 力扣(LeetCode)357
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 译米田引理
  • 白色的风信子
  • NLPIR智能语义技术让大数据挖掘更简单
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (黑马C++)L06 重载与继承
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (学习日记)2024.01.09
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .bat批处理出现中文乱码的情况
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .Net core 6.0 升8.0
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .Net IOC框架入门之一 Unity
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET的数据绑定
  • .Net接口调试与案例
  • .NET企业级应用架构设计系列之开场白
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /proc/vmstat 详解