C++ 实现atoi,memcpy, strcpy

面试必会函数源代码 strcpy/memcpy/atoi/kmp/quicksort 一、写在前面        继上一次发表了一片关于参加秋招的学弟学妹们如何准备找工作的博客之后,反响很大,顾在此整理一下,以便大家复习。好多源自july的这篇博客,也有很多是我自己整理的。希望大家能够一遍一遍的写,直到能够秒杀为止。二、stl模板函数    1、strcpychar * strcpy( char *strDest, const char *strSrc ) { 阅读详情

C++ 实现atoi,memcpy, strcpy
是C++ 常见面试题

atoi,要考虑开头有空格,有正负号,以及溢出的情况。

int myAtoi(char * str) {
    if(str==NULL) {
        return 0;
    }
    while(*str==' ') {
        str++;
    }
    bool isPositive=true;
    if(*str=='-') {
        isPositive=false;
        str++;
    } else if(*str=='+') {
        str++;
    }
    long res=0;
    while(*str>='0'&&*str<='9') {
        res=res*10+*str-'0';
        if(res>INT32_MAX) {
            return isPositive ? INT32_MAX : INT32_MIN;
        }
        str++;
    }
    if(!isPositive) {
        res=0-res;
    }
    return res;
}

memcpy ,要考虑两块地址有重叠的情况,若从前往后复制会造成数据丢失。

void* my_memcpy(void *dst, const void *src, size_t size) {
    const char *psrc;
	char * pdst;
    if (dst == NULL || src == NULL || size<=0) 
        return NULL;
    if (dst <= src) {
        psrc = (const char *)src;
        pdst = (char *)dst;
        while (size--) 
            *pdst = *psrc;
            pdst++;
            psrc++;
    } else {
		// 如果可能重叠则从后往前复制
        psrc = (const char *)src + size - 1;
        pdst = (char *)dst + size - 1;
        while (size--) {
            *pdst-- = *psrc--;
		}
    }
    return pdst;
}

类似于memcpy,复制遇到’\0’结束。

void my_strcpy(char * str, char * src) {
    if(str==NULL||src==NULL) {
        return ;
    }
    int len=strlen(src);
    char *re_str;
    char *re_src;
    if(str<src) {
        while(len--) {
            re_str=str;
            re_src=src;
            *re_str++ = *re_src++;
        }
    } else {
        re_str=str+len-1;
        re_src=src+len-1;
        while(len--) {
            *re_str-- = *re_src--;
        }
    }
}
C/C++面试常见的几个库函数详解(strcpy,memcpy,memset,atoi...) 前言在面试中,常常会被问到几个库函数的实现,虽然代码很短,涉及的细节却特别多,因此特别受面试官青睐,所以要把他们熟记于心,方能应对自如。strcpy()原型声明:char strcpy(char dest, const char *src); 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间 阅读详情

相关推荐

【第4章 光模块实测方法总结(环境搭建、眼图测试、接收测试、注意事项)】

本文系统介绍了光模块测试的完整流程与关键要点,涵盖低速模块到3.2T PAM4超高速模块的测试方法。内容包括:1)测试环境搭建(光路/电路要求);2)核心测试项目(眼图分析、接收灵敏度/饱和测试、误码压力测试);3)PAM4专项测试(TDECQ、RLM线性度等);4)可靠性测试(温循、电压、老化);5)八大注意事项(如禁止脏端面测试、长短距混插等)。特别强调高速模块对测试环境的高敏感性,需重点关注波形质量而非单纯光功率,并需进行严格压力测试才能暴露潜在问题。

学无止境 438

atoi 等相关函数的用法

本文中调用的四个函数如下: atoi函数:将字符串转化为int类型变量 atol函数:将字符串转化为long类型变量 atoll函数:将字符串转化为long long类型变量 atof函数:将字符串转化为double类型变量 这些函数的转化过程,都是将一个字符串的可读部分取到变量中 遇到不可读的部分,则直接终止读取 调用示例: ?

yuan_hong_wei 1680

【知识图谱】一文看懂知识图谱的搭建实践与科普教程(5万字完结篇)

所有可能的实体对:(“Mate40”,“华为”), (“Mate40”,“手机”), (“华为”,“手机”)。送入关系模型分类,预期输出 (“Mate40”,“华为”): 品牌, (“Mate40”,“手机”): 属于类别, (“华为”,“手机”): 无关系。,定义了图谱中概念和关系的类型层次结构,相当于知识图谱的“纲领”和“schema”。训练完成后,当模型看到新的句子,比如“苹果的MacBook笔记本性能强大”,识别出实体“苹果”(品牌)和“MacBook”(产品)后,就能正确输出关系“品牌”。

weixin_41645791的博客 2611

用C语言模拟实现memcpy函数,memmove函数

用C语言模拟实现memcpy函数,memmove函数

m0_72000264的博客 531

基于ROS2系统开发机器人

以上是基于ROS 2开发机器人的基本流程和一个简单的发布者-订阅者示例。通过这个流程,你可以逐步扩展和优化你的机器人系统,实现更复杂的功能。

xuweilin的博客 1494

音频——DAC 性能测试

codec DAC 性能测试方法

tyustli 2235

C/C++ atoi、atof与itoa函数的实现

1.atoi(ascii to integer)是把字符串转换成整型数的一个函数.atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等)。int atoi(char s[]) { int i, n; n = 0; for (i = 0; s[i] &gt;= '0'&amp;&amp;s[i] &lt;= '9'; ++i) n = 10 * n + (...

GUI1259802368的博客 1777

运维颠覆!一文解锁AI赋能运维实战秘籍,效率飙升!

将AI应用于运维工作是一场极具价值的变革,从故障预测与诊断到自动化任务执行,再到资源管理优化,AI都展现出巨大潜力。尽管在实践过程中会面临数据质量、模型复杂性等挑战,但通过合理的技术选型和解决方案,我们能够充分挖掘AI的优势,实现运维工作的高效、智能转型。持续探索和创新AI在运维领域的应用,将为企业的数字化发展提供坚实保障。在科技飞速发展的当下,运维领域正经历着深刻变革,AI的融入成为提升运维效率与质量的关键。本文将深入实战,带你领略AI如何在运维各环节大显身手,让你的运维工作开启智能高效新模式。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 401

C++面试常问的库函数

C++面试常用的库函数

Sophie94的博客 726

YOLOv11 改进入门篇 | 从原理到代码:CBAM 注意力模块的插入与涨点验证

本文介绍了如何在YOLOv11模型中插入CBAM注意力模块以提升检测性能。CBAM包含通道和空间注意力两个子模块,通过双池化操作和MLP学习特征权重。文章详细解析了CBAM原理,提供了PyTorch实现代码,并建议在YOLOv11的Stage-3和Stage-4之间插入CBAM。实验表明,该方法在COCO数据集上使nano和small模型的mAP提升1.7-2.3个百分点,参数量仅增加0.27%,推理延迟增加0.1ms。最后给出了插入位置选择、通道缩减比等调优建议,验证了CBAM作为轻量级注意力模块的有效性

shrgegrb的博客 1301

“反激电源”是AC/DC隔离电源还是DC/DC隔离电源?

所以在一些场景,我们的输入电压是一个DC,但是我们仍然需要隔离电源的需求,我们就会只采用图9.2的右半部分。在这个场景下“反激电源”是DC/DC。所以此AC/DC的本质是将AC变成高压的DC之后,用带隔离变压器的反激式开关电源产生一个隔离的、稳定的直流电压。一般在讲述各种电源的拓扑的文章和书籍都是在讲述AC/DC的电源拓扑分类的时候,讲述Flyback。反激式开关电源是指使用反激高频变压器隔离输入输出回路的开关电源,反激式隔离变压器开关电源重点表述的是开关电源包含变压器的拓扑结构。

qq_43416206的博客 1293

嵌入式基础面经

文章目录memmove 和 memcpy的区别 又到面试季了,很多小伙伴们准备跃跃欲试,那么我们准备好了吗?下面将总结一些面试题,巩固一下基础。 memmove 和 memcpy的区别 他们的作用是一样的,区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。 void *memcpy(void *dest, const void *src,...

zhaoyun_zzz的专栏 1956

Open3D 曲率下采样

曲率下采样是一种基于几何特征的点云处理技术,通过计算每个点的曲率来判断其所在位置的局部表面特征,从而进行选择性保留。曲率的计算通常基于点的法向量和其邻域点的分布。

纵马踏花向自由 841

个人手撕代码二、字符串相关

一、strcpy相关 #include <iostream> #include <string.h> using namespace std; //内存重叠的错误例子 char* my_strcpy_false(char* dst, const char* src,int cpylen) { if (!dst || !src) return NULL; char* d = dst; int cnt = cpylen; w..

qq_42708502的博客 171

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

strcat、strcpy、strncpy、memset、memcpy、itoa、atoi的使用和内部实现

1:strcat 函数原型: char *strcat(char *__s1, const char *__s2); 在使用上要注意 char* a 和 char a[] 的区别,如下方式是错误的: int main{ char* a = "abc"; char b[] = "def"; char* c = strcat(a,b); } 因为 a 指向的字符串分配在字符常量区,是不可更改...

goldfish3的博客 636

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

memcpy, strcpy, strlen, strcmp, itoa, atoi 的函数实现

不使用库函数,实现 memcpy, strcpy, strlen, strcmp, itoa, atoi. 本文地址 : 1. memcpy内存拷贝函数。 函数原型void *memcpy(void*dest, const void *src, size_t n); // n 为字节数注意问题: 1. 判断输入地址有效性 2. 将src,dst 指针强制转换成字符型指针,逐字节复制 3.

quinn的专栏 1409

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

atoi itoa strcpy strcmp strlen strcat memcpy memset实现

实现总结一下C常用库中的一些函数,把书上的变成自己的! 其中:atoi 在标准库,但itoa不在标准库中, stdlib中,strcpy,strcmp,strlen,strcat,memcpy,memset 在库string中 一 atoi   原型为 int atoi(const char *nptr),实现字符串转为整型。 方法一: int myatoi(const char *

wuli20122012的专栏 792

c/c++字符串处理函数解析: 拷贝(strcpy/memcpy/strncpy),裁剪(split),拼接(strcat),类型转换(atoi/itoa/atof/atol),字符串格式化输出等

c语言的字符串库函数,在string.h头文件中 1.拷贝函数strcpy、memcpy、strncpy strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。 怎么才算字符串?字符串和字符数组区别? 字符串的结尾是默认有一个\0作为结束符的。字符数组你不给他手动赋值,他是没有的。如果用strcpy这个拷贝函数,就要小心自己的输入参数是不是一个字符串,如果是字符数组,一定不要忘记结尾处赋值\0,不然的话就会溢出了,可以手动试...

Wmll1234567的博客 4609

strcpy(),strncpy(),strcmp(),strcat(),memset(),memcpy(),atoi(),

出处http://blog.youkuaiyun.com/jiange_zh 前言 在面试中,常常会被问到几个库函数的实现,虽然代码很短,涉及的细节却特别多,因此特别受面试官青睐,所以要把他们熟记于心,方能应对自如。 strcpy() 原型声明:char strcpy(char dest, const char *src);  功能:把从src地址开始且含有NULL结束符的字符串

tengfei_scut的博客 380

面试必会函数源代码 strcpy/memcpy/atoi/kmp/quicksort

一、写在前面         继上一次发表了一片关于参加秋招的学弟学妹们如何准备找工作的博客之后,反响很大,顾在此整理一下,以便大家复习。好多源自july的这篇博客,也有很多是我自己整理的。希望大家能够一遍一遍的写,直到能够秒杀为止。 二、stl模板函数     1、strcpy [cpp] view plaincopy

常思考->有目标->重实践->善反思 675

strcpy, memcpy, memset函数

一. strcpy函数 原型声明:char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 和 #include <stdio.h> 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间 说明:src和dest所指内存区域不可以重叠且dest必...

weixin_30270889的博客 97
上一篇: LeetCode 24.两两交换链表中的节点
下一篇: LeetCode 31. 下一个排列
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值