实现strcpy函数(转)

自己实现strcpy函数 问题描述:自己实现一个MyStrcpy函数,要和C语言库函数的strcpy函数完成同样的功能。问题分析: 首先我们要了解一下atoi函数它到底做了什么事情(1) 函数原型 char *strcpy(char *dest, const char *src);(2) 函数说明dest 为目标字符串指针,src 为源字符串指针,该函数把src所指的由NULL结束的字符串复制到dest 所指的数组中 阅读详情

题目:
    已知strcpy函数的原型是:
        char * strcpy(char * strDest,const char * strSrc);
    1.不调用库函数,实现strcpy函数。
    2.解释为什么要返回char *。

    解说:
    1.strcpy的实现代码


        char * strcpy(char * strDest,const char * strSrc)
        {
                if ((strDest==NULL)||(strsrc="/=NULL")) //[1]
                        throw "Invalid argument(s)"; //[2]
                char * strDestCopy=strDest;  //[3]
                while ((*strDest++=*strSrc++)!='/0'); //[4]
                return strDestCopy;
        }

    错误的做法:
    [1]
    (A)不检查指针的有效性,说明答题者不注重代码的健壮性。
    (B)检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest&&strSrc)),说明答题者对C语言中类型的隐式转换没有深刻认识。在本例中char *转换为bool即是类型隐式转换,这种功能虽然灵活,但更多的是导致出错概率增大和维护成本升高。所以C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式。
    (C)检查指针的有效性时使用((strDest==0)||(strsrc="/=0")),说明答题者不知道使用常量的好处。直接使用字面常量(如本例中的0)会减少程序的可维护性。0虽然简单,但程序中可能出现很多处对指针的检查,万一出现笔误,编译器不能发现,生成的程序内含逻辑错误,很难排除。而使用NULL代替0,如果出现拼写错误,编译器就会检查出来。
    [2]
    (A)return new string("Invalid argument(s)");,说明答题者根本不知道返回值的用途,并且他对内存泄漏也没有警惕心。从函数中返回函数体内分配的内存是十分危险的做法,他把释放内存的义务抛给不知情的调用者,绝大多数情况下,调用者不会释放内存,这导致内存泄漏。
    (B)return 0;,说明答题者没有掌握异常机制。调用者有可能忘记检查返回值,调用者还可能无法检查返回值(见后面的链式表达式)。妄想让返回值肩负返回正确值和异常值的双重功能,其结果往往是两种功能都失效。应该以抛出异常来代替返回值,这样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。
    [3]
    (A)忘记保存原始的strDest值,说明答题者逻辑思维不严密。
    [4]
    (A)循环写成while (*strDest++=*strSrc++);,同[1](B)。
    (B)循环写成while (*strSrc!='/0') *strDest++=*strSrc++;,说明答题者对边界条件的检查不力。循环体结束后,strDest字符串的末尾没有正确地加上'/0'。

    2.返回strDest的原始值使函数能够支持链式表达式,增加了函数的“附加值”。同样功能的函数,如果能合理地提高的可用性,自然就更加理想。
    链式表达式的形式如:
        int iLength=strlen(strcpy(strA,strB));
    又如:
        char * strA=strcpy(new char[10],strB);
    返回strSrc的原始值是错误的。其一,源字符串肯定是已知的,返回它没有意义。其二,不能支持形如第二例的表达式。其三,为了保护源字符串,形参用const限定strSrc所指的内容,把const char *作为char *返回,类型不符,编译报错。
Smali语言基础语法 定义、声明、调用 Smali数据类型 定义:与Java相同,Smali中也有一套数据类型体系,且该体系实质上是同Java一一对照的。 示例1:Smali——Java数据类型对照表 PS:如上图所示,Smali语言中的数据类型的关键词基本上为Java中同名数据类型的首字母大写,需要着重记忆的例外为:1.long类型的关键词为大写J;2.boolean类型的关键词为大写Z;3.数组的关键词为左半边中括号[;4.object类型(各种类)的关键词为大写L加上该类的全类名路径,路径中的层级用/分割。 阅读详情

相关推荐

Halcon形状模板匹配实战:inspect_shape_model参数优化指南

本文深入解析Halcon形状模板匹配中inspect_shape_model参数的优化技巧,涵盖NumLevels和Contrast参数的实战应用。通过具体案例展示如何平衡匹配速度与精度,帮助开发者高效调试形状模型,提升工业视觉检测的准确性和效率。

weixin_30342209的博客 618

strcpy函数的实现

已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcpy的实现代码 char * strcpy(char *dst,const char *src) //[1] { ...

weixin_30794491的博客 1534

避坑指南:vmdk转qcow2镜像时你可能会遇到的5个问题及解决方法

本文详细解析了将VMDK虚拟机镜像转换为QCOW2格式时可能遇到的五大核心问题,特别是启动失败的常见原因及解决方案。内容涵盖格式差异、预处理优化、转换命令详解,并针对根文件系统挂载失败、GRUB引导失败、网卡识别、性能异常等典型故障提供了具体排查与修复步骤,旨在帮助运维人员高效、可靠地完成镜像迁移。

websocket5live的博客 275

strcpy函数实现

strcpy函数实现 strcpy函数的原型为:char* strcpy(char* _Dest, const char* _Source); //实现1 char * strcpy(char* _Dest, const char* _Source) { //检查传入参数的有效性 assert(NULL != _Dest); assert(NULL != _Sour...

HHHUANG 2万+

Windows 10/11下R与RStudio最新版安装避坑指南(含镜像加速配置)

本文提供了Windows 10/11系统下R与RStudio最新版的详细安装指南,包含镜像加速配置和常见问题解决方案。通过分步教程帮助用户避开安装陷阱,优化开发环境设置,特别适合国内用户快速搭建高效的数据分析平台。

weixin_29065959的博客 1005

IsaacGym四足机器人sim to real全过程详细解析(walk these ways方法)

本文使用强化学习的方法运行到Aliengo机器人上完成从训练到部署的全过程。该方法使用的是GO1机器人提供了完整的sim to real代码和遥控器控制代码,所以我们只需要重新训练和部署健康就可以使用在Aliengo上。该方法使用lcm进行通讯首先程序通过UDP和机器人控制板进行通讯获取机器人状态并下达指令。然后又通过lcm进行机器人状态信息的发布和模型命令的获取。

weixin_44061195的博客 2万+

编程实现strcpy函数

http://hi.baidu.com/tangsu2009/item/14748bd3a49073362b35c7f4 已知strcpy函数的原型是: char * strcpy(char * strDest,const char * strSrc); (1)不调用库函数,实现strcpy函数。 (2)解释为什么要返回char *。 代码如下: 1    

u011248345的专栏 1015

Simlink与PX4硬件在环仿真(HIL)实现

Simlink与PX4硬件在环仿真(HIL)实现 介于涉及的知识比较多,这里只是简单的介绍一下,更多内容可以参考阿木实验室《基于matlab模型开发》课程。 硬件在环HIL介绍 simlink与PX4通信实现 硬件在环HIL介绍 为来贯彻万物都可以用数学公式表示,我们以simlink的角度来看我们的无人机,那么UAV可以分为以下的几个模块: 传感器模型 滤波器模块 控制器模...

Zipout的博客 6210

C代码实现strcpy函数功能

C语言实现类似strcpy函数功能 功能描述:strcpy能实现将某一个一个数组字符串拷贝到另外的一个数组中实现字符串的复制。 char *my_strcpy(char *str,char *src); int main(int argc,const char **argv) { char buf[10]; bzero(buf,10);//清空数组 my_strcpy(buf,"helloword"); printf("%s",buf); return 0; } char *my_str

weixin_37552254的博客 1950

基于深度学习 YOLOv11 的快递包裹检测系统(Python + PySide6 界面 + 训练代码)

成为亟需优化的重要环节。随着电子商务的快速发展,物流行业面临着越来越大的压力,为了解决这些问题,我们提出了一种。目标检测算法,实现快递包裹的。的界面,供用户进行实时监控。本项目的主要目标是利用。

斌擎科技 762

单片机应用案例:ESP32 搭配 BH1750 光强传感器和 Web 服务器

在该应用案例中,我们将使用 ESP32 开发板作为主控制器,BH1750 光强传感器用于采集环境光强度数据,并通过 Web 服务器展示采集到的数据。步骤一:购买材料步骤二:连接硬件步骤三:编写代码我们将使用 Arduino IDE 编写代码,以下是主要代码:// WiFi 设置const char* ssid = “你的 WiFi 名称”;const char* password = “密码”;// Web 服务器实例// BH1750 实例// 获取当前光强度数据。

RlDart的博客 812

strcpy函数的实现【转】

转自:http://www.cnblogs.com/chenyg32/p/3739564.html 已知strcpy函数的原型是: char *strcpy(char *dst, const char *src); 实现strcpy函数 解释为什么要返回char * 假如考虑dst和src内存重叠的情况,strcpy该怎么实现 1.strcp...

weixin_34185512的博客 93

手把手入门YOLO到改进优化教程 | 【P2基础篇】数据标注+环境搭建+模型训练

本节以 YOLO自定义目标检测训练为主线,带你从零开始完成 数据标注 → 环境搭建 → 模型训练 → 结果的流程。使用labelImg制作符合YOLO格式的自定义数据集。在Windows基于 Python + Conda 创建独立虚拟环境,安装 PyTorch + CUDA + ultralytics,配置 PyCharm 运行环境。本节不仅使用自定义数据集进行演示,同时也用公开数据集训练 YOLO,查看训练日志与可视化结果(PR、P/R/F1 曲线等)等。

嵌入式阿齐Archie 2万+

[转]C++常用库函数atoi,itoa,strcpy,strcmp的实现

C++常用库函数atoi,itoa,strcpy,strcmp的实现 <br />1.//整数转换成字符串itoa函数的实现<br />#include "stdafx.h"<br />#include <iostream><br />using namespace std;<br />void itoaTest(int num,char str[] )<br />{<br />       int sign = num,i = 0,j = 0;<br />

小鸟学习的专栏 1621

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[转]memmove、memcpy和memccpy简介及strcpy()等函数的实现

转眼间就大四了,马上就要找工作了,转篇文章学习,貌似这几个函数的用法和实现还是比较常考的。 PS.大学四年倒是做了不少东西,代码虽烂也接近10W行了,但一直把技术博客荒废着……现在看来自己是确实太懒了……以后须常记录学习经历及过程,造福后来人的同时也可供以后的自己回味:) 其实转的是两篇文章,有些交叉点故合为一篇,分别转自: 函数简介:memmove、memcpy和memcc...

weixin_30376509的博客 84

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)【转】

strcpy: char *strcpy(char *strDestination, const char *strSource); { assert(strDestination && strSource); char *cp=strDestination; while(*cp++ = *strSource++); return strDestination; }

kuailekemi的专栏 480

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

库函数 strlen strcpy strcmp strstr strcat memcpy memmove 小写转大写 函数实现

// 小写转大写 核心思想是与ASCII对应的值进行比较 int my_islower(char c) { return c >= 97 && c <= 122; } int my_toupper(char c) { return my_islower(c) ? c - 32 : c; } int main() { char str[] = "this is sring"; int len = strlen(str); int i = 0; for (; i &

xykzzz的博客 362

【转】字符串操作函数 C语言实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )

实现C/C++中的字符串操作函数是很练内功的,别看着这些函数很简单,自己实现起来,还是有许多地方需要考虑的,所以没独立写过的朋友,可以自己敲敲看 .--By Crazybaby strcpy: [cpp]view plaincopyprint? char*cb_strcpy(char*dst,constchar*src){ ...

weixin_30301449的博客 211

C函数的实现(strcpy,atoi,atof,itoa,reverse)

在笔试面试中经常会遇到让你实现C语言中的一些函数比如strcpy,atoi等 1. atoi 把字符串s转换成数字 int Atoi( char *s ) { int num = 0, i = 0; int sign = 1; for( i=0; isspace(s[i]); i++ ); sign = (s[i] == '-')? -1:1; if( s[

矩阵实验室 2628

面试中长间的strcpy、字符串整形相互转换、memcpy函数的实现

面试题中经常看到让自己写出str

大冰的小屋 1321

C++常用库函数atoi,itoa,strcpy,strcmp的实现

C++常用库函数atoi,itoa,strcpy,strcmp的实现 . view plaincopy to clipboardprint? 01.1.//整数转换成字符串itoa函数的实现  02.#include "stdafx.h"  03.#include    04.using namespace std;  05.void itoaTest(int num,ch

cool water 1199

字符串函数实现

基础函数实现

ForeverDirect的博客 376

C++实现strcpy, strlen, strstr, atoi等字符串相关API

实现strcpy,字符串拷贝函数,具体实现如下:

Donny's Blog 1703
上一篇: C++复习
下一篇: sizeof()的使用及各种数据类型的字节大小
devilkin64
博客等级 码龄19年 16粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值