函数的模拟实现

题一:

模拟实现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;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ansible Handlers模块详解,深入理解Ansible Handlers 自动化中的关键组件

深入理解Ansible Handlers 自动化中的关键组件 在现代的IT环境中&#xff0c;自动化已经成为提高效率和减少错误的关键。Ansible作为一款流行的自动化工具&#xff0c;通过使用Playbooks来定义和执行任务。而Handlers作为Ansible的组件之一&#xff0c;在自动化过程中发挥着重要…

Linux 基础(四)常用命令-日期 用户权限

日期 & 用户权限 日期用户权限用户用户组用户权限 日期 获取当前日期时间 date设置时间 date -s "yyyy-MM-dd HH:mm:ss"或 timedatectl set-time YYYY-MM-DD HH:MM:SS校准时间&#xff08;如本地时间不准&#xff09; # 开启后自动校准时间 sudo timedatectl…

安装elasticsearch

一、docker安装elasticsearch 1、下载镜像 docker pull elasticsearch:6.5.4 2、启动容器 docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \ -e "discovery.typesingle-node" \ -e "cluster.nameelasticsearch" \ -e "ES_JAVA_OPTS-Xm…

Java生成文件到ftp服务器

废话不多说&#xff0c;直接上代码&#xff0c;拿去直接可以使用。 如果小伙伴们没有可以测试ftp服务器&#xff0c;可以在自己的本地搭建一套ftp服务&#xff0c;步骤也很简单 传送门&#xff1a;Windows下如何搭建FTP服务并且设置其用户名和密码 (taodudu.cc) 一.引入依赖…

MySQL——Mysql安装教程- Windows

一、Mysql安装 1、下载mysql安装包 下载链接&#xff1a; 链接&#xff1a; https://pan.baidu.com/s/1rFpMqOCApiQQEwYSs9XSmg https://pan.baidu.com/s/1rFpMqOCApiQQEwYSs9XSmg 提取码&#xff1a;zt88 2、 安装 1&#xff09;选择电脑磁盘空闲的路径&#xff1a; 2&…

Small Tip: 如何Debug Start Routine

我也不知道咋地&#xff0c;在generated ABAP里面打断点进不去。 我也不晓得怎么弄&#xff0c;今天反正是硬找着去弄。不晓得有没有其他好办法。有知道的小伙伴评论下吧。 1、 在DTP里面选Before Transformation&#xff0c;要去debug start routine选这个就够了。其他的随意…

吉利科技携手企企通,打造集团化数智供应链系统

近日&#xff0c;吉利科技集团有限公司&#xff08;以下简称“吉利科技”&#xff09;联合企企通成功召开SRM采购供应链管理项目启动会。企企通与吉利科技高层、项目负责人与团队成员出席此次启动会。 双方将携手在企业供应商全生命周期管理、采购全流程、电子招投标、采购分析…

Python基础小项目

今天给大家写一期特别基础的Python小项目&#xff0c;欢迎大家支持&#xff0c;并给出自己的完善修改 &#xff08;因为我写的都是很基础的&#xff0c;运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…

Maven依赖管理

依赖配置 依赖指的是项目在运行时所需要的jar包&#xff0c;一个项目中可以引入多个依赖 配置方法 1.在项目pom.xml中编写 <dependencies> 标签 2.在 <dependencies> 标签中使用<dependency>引入坐标 3.定义坐标的groupId,artifactId,version 4. 刷新按钮&a…

数字化转型为何以“身份优先”为安全策略?

数字化转型时代下&#xff0c;身份与访问管理对于企业和组织的安全和运营至关重要。然而&#xff0c;传统的IAM架构已无法满足新兴应用场景的需求&#xff0c;企业组织面临着快速扩张、严格监管和应用规模迅速增长等带来的安全挑战。随着SaaS软件即服务的快速发展和广泛应用&am…

接口测试—Fiddler工具

文章目录 Fiddler 知识1. 导语2. 配置3. 常用命令面试题1. 利用Fiddler抓取android设备https请求 Fiddler 知识 未完待续 1. 导语 为什么要用Fiddler&#xff1f; 提高测试效率. 测试人员通过使用Fiddler自己调试接口&#xff0c;无需麻烦后台同学帮忙. 模拟多种测试环境. 可…

SQL Server基础之存储过程

一:存储过程概述 SQL Server中的存储过程是使用T_SQL编写的代码段。它的目的在于能够方便的从系统表中查询信息&#xff0c;或者完成与更新数据库表相关的管理任务和其他的系统管理任务.T_SQL语句是SQL Server数据库与应用程序之间的编程接口。在很多情况下&#xff0c;一些代码…

棒球课堂的发展规划·棒球联盟

棒球课堂的发展规划 1. 棒球课堂的发展环境 探讨棒球课堂如何通过运用创新的教学方法来适应不断变化的市场需求。包括但不限于&#xff0c;科学地运用大数据和人工智能技术来提高教学效率&#xff0c;加强教师队伍的专业培训&#xff0c;以及拓展课外活动&#xff0c;增强学生…

【果树农药喷洒机器人】Part3:变量喷药系统工作原理介绍

本专栏介绍&#xff1a;免费专栏&#xff0c;持续更新机器人实战项目&#xff0c;欢迎各位订阅关注。 关注我&#xff0c;带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章&#xff01; 文章目录 一、变量喷药系统工作原理二、液压通路设计与控制系统封装2.1液压通路…

企业权限管理(八)-登陆使用数据库认证

Spring Security 使用数据库认证 在 Spring Security 中如果想要使用数据进行认证操作&#xff0c;有很多种操作方式&#xff0c;这里我们介绍使用 UserDetails 、 UserDetailsService来完成操作。 UserDetails public interface UserDetails extends Serializable { Collecti…

通过PostMan监视提交文件,验证web文件传输

切换文件流,传输文件 找到图片地址 发送请求然后接受 再来一张 哈&#xff0c;谢谢各位同志的阅读&#xff0c;然后呢如果觉得本文对您有所帮助的话&#xff0c;还给个免费的赞捏 Thanks♪(&#xff65;ω&#xff65;)&#xff89;

【剑指Offer 28】对称的二叉树,Java解密。

LeetCode 剑指Offer 75道练习题 文章目录 剑指Offer:对称的二叉树示例:限制:解题思路:剑指Offer:对称的二叉树 【题目描述】 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。…

RabbitMQ之TTL+死信队列实现延迟队列

RabbitMQ是一个流行的消息队列系统&#xff0c;它提供了许多有用的功能&#xff0c;其中之一是TTL&#xff08;Time To Live&#xff09;和死信队列。这些功能可以用来实现延迟队列&#xff0c;让我们来看看如何使用它们。 首先&#xff0c;什么是TTL&#xff1f;TTL是消息的存…

OpenStack-Y版安装部署

OpenStack-Y版安装部署 目录 OpenStack-Y版安装部署 1、环境准备 1.1 环境简介1.2 配置hosts解析(所有节点)1.3 配置时间同步1.4 安装openstack客户端(控制节点执行)1.5 安装部署MariaDB(控制节点执行)1.6 安装部署RabbitMQ(控制节点执行)1.7 安装部署Memcache(控制节点执行)2、…

穿越未来:探索虚拟现实科技的未来前景

虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;科技&#xff0c;正如一颗崭新的明星&#xff0c;迅猛崛起&#xff0c;为人类带来前所未有的体验和想象空间。随着科技的飞速发展&#xff0c;VR 科技的未来充满了无限的可能性&#xff0c;正将我们引向一个…