函数的模拟实现
题一:
模拟实现strncpy
#include <stdio.h>void my_strncpy(char* arr2, char* arr1, size_t num){int i = 0;for (i = 0; i < num; i++){*(arr2 + i) = *(arr1 + i);}}int main(){char arr1[] = "hello liangzai";char arr2[10] = { 0 };//strncpy(arr2,arr1,sizeof(arr2));my_strncpy(arr2, arr1, sizeof(arr2));return 0;}
优解一:
char * mystrncpy(char * dst, const char * src, size_t n)
{int i;for (i = 0; src[i] && i < n; i++){dst[i] = src[i];}if (i < n){dst[i] = 0;}return dst;
}
题二:
模拟实现strncat
#include <stdio.h>#include <string.h>char* my_strncat(char* arr1, const char* arr2, size_t num){int sz = strlen(arr1);int i = 0;for (i = 0; i < num; i++){*(arr1 + sz + i) = *(arr2 + i);}return arr1;}int main(){char arr2[] = "shawanyi ";char arr1[20] = "hello ";//strncat(arr1,arr2,10);my_strncat(arr1, arr2, 10);return 0;}
优解一:
char * mystrncat(char * dst, const char * src, size_t n)
{char * tmp = dst;while (*dst){dst++;//记录到dst最后一个位置}int i;for (i = 0; src[i] && i < n; i++){dst[i] = src[i];}dst[i] = 0;return tmp;
}
题三:
模拟实现atoi
#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <ctype.h>int my_atoi(const char* arr1){assert(arr1);int sum = 0;if (*(arr1) == '\0'){return 0;}while(isspace(*arr1)){arr1++;}int flat = 1;if (*arr1 == '+'){arr1++;}else if (*arr1 == '-'){flat = -1;arr1++;}int ret = 0;while (isdigit(*arr1)){ret = ret * 10 + (*arr1 - '0');if (ret > INT_MAX){return INT_MAX * flat;}else if (ret < INT_MIN){return INT_MIN * flat;}arr1++;}if (isdigit(*arr1) == 0){return ret * flat;}return ret*flat;}int main(){char arr1[] = "-123666a44";//int n = atoi(arr1);int sz = 0;sz = my_atoi(arr1);return 0;}
优解一
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
//VALID 表示结果合法
//INVALID 表示结果非法
enum State
{VALID,//0INVALID//1
};
//默认结果可能非法,当正确转换后再改为合法
enum State state = INVALID;
int my_atoi(char *str)
{int flag = 1;long long ret = 0;assert(str);state = INVALID;//跳过空白字符while(isspace(*str)){str++;}if(*str == '\0'){return 0;}//跳过正负号if(*str == '+'){str++;}else if(*str == '-'){flag = -1;str++;}//开始转换数字字符直到非数字字符while(isdigit(*str)){ret = ret * 10 + flag * (*str-'0');if((ret > INT_MAX) || (ret < INT_MIN)){return 0;}str++;}//正常停止if(*str == '\0'){state = VALID;return (int)ret;}else{//遇到非数字字符return (int)ret;}
相关文章:
函数的模拟实现
题一: 模拟实现strncpy #include <stdio.h>void my_strncpy(char* arr2, char* arr1, size_t num){int i 0;for (i 0; i < num; i){*(arr2 i) *(arr1 i);}}int main(){char arr1[] "hello liangzai";char arr2[10] { 0 };//strncpy(ar…...
CSDN博客批量查询质量分https://yma16.inscode.cc/请求超时问题(设置postman超时时间)(接口提供者设置了nginx超时时间)
文章目录 查询链接问题请求超时原因解决谷歌浏览器超时问题办法(失败了)谷歌浏览器不支持设置请求超时时间(谷歌浏览器到底有没限制请求超时?貌似没有限制?)看能否脱离浏览器请求,我们查看关键代…...
什么是 CSRF 攻击?
概念 CSRF 攻击指的是跨站请求伪造攻击,攻击者诱导用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保存了登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户验证,冒充用…...
[内网渗透]CFS三层靶机渗透
文章目录 [内网渗透]CFS三层靶机渗透网络拓扑图靶机搭建Target10x01.nmap主机探活0x02.端口扫描0x03.ThinkPHP5 RCE漏洞拿shell0x04.上传msf后门(reverse_tcp)反向连接拿主机权限 内网渗透Target2(1)路由信息探测(2)msf代理配置&a…...
一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务以及配置子服务器
一、目的 kettle8.2在Linux上安装好可以启动界面、并且可以连接MySQL、Hive、ClickHouse等数据库后,准备在Linux上启动kettle的carte服务 二、实施步骤 (一)carte服务文件路径 kettle的Linux运行的carte服务文件是carte.sh (二…...
2023高教社杯数学建模A题 B题C题 D题 E题思路代码分析
文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...
从ChatGLM2-6B来看大模型扩展上下文和加速推理相关技术
ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了如下新特性: 更强大的性能:基于 ChatGLM 初代模型的开发经验,全面…...
Unity特效总览
一、粒子 Unity中的粒子组件叫做Particle System。 粒子系统顾名思义,与“微粒”有关。粒子系统会生成和发射很多粒子,通过控制粒子的生成数量、大小、角度、速度、贴图和颜色等众多属性,可以实现或真实或炫酷的各种效果。其中,…...
Unity中人物控制器
在Unity中控制器是很常见的功能,一般的人物控制器有两种方法,一种是通过代码实现,另外一种就是通过Unity中的API实现。 这里主要介绍第一种方法。 首先对控制器步骤进行分析。 步骤1:通过方向键控制人物移动。 步骤2ÿ…...
零钱兑换-输出组合数
1.暴力递归 (1)剩余金额小于0,无解 剩余金额等于0,有解 剩余金额大于0,继续递归 (2)从大的硬币到小的硬币,可以减少循环次数 #include <bits/stdc.h> using namespace std;…...
Mybatis 小结
一、Mybatis 基本构成 MyBatis的整体分为基础支持层、核心处理层、接口。 1.1、基础支持层 1.1.1、数据源模块 MyBatis自身提供了相应的数据源实现,也提供了与第三方接口数据源集成的接口,这些功能都位于数据源模块之中。 1.1.2、事务管理模块 …...
【Cartopy】库的安装和瓦片加载(天地图、高德等)
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 Cartopy基础入门 【Cartopy】库的安装和天地图瓦片加载 【Cartopy】【Cartopy】如何更好的确定边界显示 【Cartopy】【Cartopy】如何丝滑的加载Geojso…...
TCPDF生成PDF文件,含jpjraph生成雷达图
TCPDF生成PDF文件,含jpjraph生成雷达图 依赖自行安装 "tecnickcom/tcpdf": "^6.6","amenadiel/jpgraph": "4"雷达图生成 中文字体添加安装 没有封装,只作为测试案例展示 // 创建新的PDF文档$pdf new \TCPD…...
Flink-串讲面试题
1. 概念 有状态的流式计算框架 可以处理源源不断的实时数据,数据以event为单位,就是一条数据。 2. 开发流程 先获取执行环境env,然后添加source数据源,转换成datastream,然后使用各种算子进行计算,使用s…...
如何培养对技术的热爱
这篇博文主要针对计算机专业相关的同学,对于理工科专业的同学有一定的借鉴意义,对于其他专业的同学,还请自行取舍。 背景 初学计算机,可能并不是每个人都能对其产生兴趣,更不要说从其中获得快乐。对于如何培养兴趣&a…...
Vue响应式数据的原理
在 vue2 的响应式中,存在着添加属性、删除属性、以及通过下标修改数组,但页面不会自动更新的问题。而这些问题在 vue3 中都得以解决。 vue3 采用了 proxy 代理,用于拦截对象中任意属性的变化,包括:属性的读写、属性的…...
pytest fixture 用于teardown工作
fixture通过scope参数控制setup级别,setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作。这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作。 举个例子: 输出: 说明&…...
39 printf 的输出到设备层的调试
前言 在前面 printf 的调试 我们只是调试到了 glibc 调用系统调用, 封装了参数 stdout, 带输出的字符缓冲, 以及待输出字符长度 然后内核这边 只是到了 write 的系统调用, 并未向下细看 我们这里 稍微向下 细追一下, 看看 到达设备层面 这里是怎么具体的 impl 的 测试用例…...
数字普惠金融、数字创新与经济增长—基于省级面板数据的实证考察(2011-2021年)
参照陈啸(2023)的做法,本对来自经济问题《数字普惠金融、数字创新与经济增长——基于省级面板数据的实证考察》一文中的基准回归部分进行复刻。数字普惠金融、数字创新已经成为驱动经济高质量发展的关键。利用省级面板数据,构建固…...
控制renderQueue解决NGUI与Unity3D物体渲染顺序问题
NGUI与Unity3D物体渲染顺序问题,做过UI的各位应该都遇到过。主要指的是UI与Unity制作的特效、3D人物等一同显示时的层次问题。 由于UI与特效等都是以transparent方式渲染,而Unity与NGUI在管理同是透明物体的render queue时实际上互相没有感知࿰…...
别再踩坑了!微信小程序this.setData修改对象属性的两种正确姿势(附数组场景)
微信小程序this.setData操作对象属性的深度避坑指南 刚接触微信小程序开发时,我曾在this.setData修改对象属性上栽过不少跟头。记得有一次深夜调试,明明逻辑看起来没问题,页面却始终不更新,最后发现是对象属性修改方式不当导致的。…...
从零到一搭建企业级容器平台:我为什么选择KubeSphere 3.x而不是裸奔K8s?
从零到一搭建企业级容器平台:为什么KubeSphere 3.x是比裸奔K8s更明智的选择? 当技术团队决定将业务迁移到容器平台时,摆在面前的第一个关键决策往往是:直接使用原生Kubernetes,还是选择一个企业级发行版?这…...
别再傻傻存多张图了!用MinIO和.NET Core实现按需生成缩略图,省下90%存储空间
智能缩略图方案:用MinIO与.NET Core实现存储成本优化 在数字内容爆炸式增长的今天,图片资源已成为各类应用不可或缺的组成部分。无论是电商平台的商品展示、社交媒体的用户分享,还是企业文档的图文混排,都需要处理大量不同尺寸的图…...
BES恒玄单线通讯避坑指南:解决‘收不到数据’、‘波形异常’等三大调试难题
BES恒玄单线通讯实战调试:从波形解析到中断优化的深度解决方案 当你在深夜的实验室里盯着示波器上那条纹丝不动的直线,GPIO中断就像个任性的孩子拒绝响应你的召唤——这种挫败感每个嵌入式开发者都深有体会。BES恒玄方案的单线通讯系统看似简单…...
别再东拼西凑了!我为你整理了一份超全的嵌入式开发知识图谱(含学习路线与避坑指南)
嵌入式开发者的终极成长指南:从菜鸟到架构师的系统化进阶路线 当我在2015年第一次接触STM32开发板时,面对满屏的寄存器配置和晦涩的数据手册,曾一度怀疑自己是否选错了职业方向。八年后的今天,当我带领团队完成第五代工业控制器开…...
Verilog仿真踩坑记:$readmemh读取文件,路径和位宽问题怎么破?(附完整代码)
Verilog仿真实战:$readmemh高频问题排查指南 第一次在仿真中调用$readmemh加载测试数据时,屏幕上突然弹出的七百多个警告让我头皮发麻。波形图上那些刺眼的红色"X"仿佛在嘲笑我的无知——这场景想必很多Verilog开发者都不陌生。作为数字电路仿…...
别让PCB布局毁了你的DCDC电源!实测输入电容放错位置,纹波暴增10倍
别让PCB布局毁了你的DCDC电源!实测输入电容放错位置,纹波暴增10倍 在调试一块高性能嵌入式主板的电源系统时,工程师小张遇到了诡异的现象:采用相同型号的DCDC电源芯片,参考设计标称输出纹波≤20mV,但实际测…...
新书上架 | 一本写给普通人的 AI 安全入门书
当你向 AI 提问「哪款手环最好用」,得到的答案却是一款根本不存在的产品——这不是科幻,而是 2026 年 315 晚会曝光的真实事件。AI 正在被「投毒」,而你我都可能是受害者。你可能已经习惯了每天和 AI 打交道——用它搜索信息、写邮件、做翻译…...
浙大提出 GAM:层次图记忆驱动的长程 Agent 推理
📌 一句话总结: 本工作提出 GAM,一个基于层次图结构的 Agentic Memory 框架,通过“事件缓冲—语义整合”解耦机制,实现长时对话中的稳定记忆与高效推理。 🔍 背景问题: 当前 LLM Agent 的长期…...
基于 eNSP 的校园网 NAT、DNS、HTTP 与访问控制综合实验
实验软件:eNSP | 实验内容:VLAN、单臂路由、静态 NAT、ACL、OSPF、DNS、HTTP、Telnet📌 前言这次实验的目标,是在 eNSP 中搭建一个包含学校网络、运营商网络、百度服务器网络的综合实验环境,并完成题目要求中的…...
