首页 > 其他分享 >atoi函数模拟实现

atoi函数模拟实现

时间:2024-03-21 10:00:25浏览次数:25  
标签:字符 函数 int s2 sum ret char atoi 模拟

用法:将字符串里的数字字符转化为整型数,返回整型值
转化时会跳过前面的空白字符,遇到正负号和数字字符再进行转换,如果遇到其他字符,就结束。

int my_atoi(char* s)
{
	assert(s);//先断言,判断指针S是否为空指针
	int sum = 0;
	char* s1 = NULL;
	char* s2 = NULL;
	char* s3 = s;
	while (isspace(*s))
	{
		s++;//跳过空字符
	}
	if ((*s > '0' && *s < '9') || (*s == '-')||(*s == '+'))//判断是否是数字字符和正负号
	{
		if ((*s == '-') || (*s == '+'))
			s++;
		s1 = s;//记住起始位置
		while (*s > '0' && *s < '9')
		{
			s2 = s;//记住最后一个数字的位置
			s++;
		}
	}
	int ret = 1;
	for (; (s2 >= s1) && (s2 != NULL); s2--)
	{
		sum += (*s2-48) * ret;
		ret *= 10;
	}
	if (*s3 == '-')
		return -sum;
	else
		return sum;
}
int main()
{
	char* str1 = "-1234.34";
	int ret = my_atoi(str1);
	printf("%d\n", ret);
	return 0;
}

在这里插入图片描述

标签:字符,函数,int,s2,sum,ret,char,atoi,模拟
From: https://blog.csdn.net/zxybf_/article/details/136899153

相关文章

  • 【CKA模拟题】查找集群中使用内存最高的node节点
    题干Forthisquestion,pleasesetthiscontext(Inexam,diffclustername)kubectlconfiguse-contextkubernetes-admin@kubernetesFindtheNodethatconsumesthemostMEMORYinallcluster(currentlywehavesinglecluster).Then,storetheresultin......
  • C++ 函数模板
    C++函数模板函数模板在C++中,函数模板是一种允许函数以一种类型无关的方式来操作的工具。它们使得函数能够处理不同类型的数据而不需要为每种类型编写重复的代码。函数模板的核心思想是“参数化类型”,这意味着在定义函数时,可以使用一个或多个通用类型参数,而在函数被调用时......
  • Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES|附代码数据
    全文链接:http://tecdat.cn/?p=24753最近我们被客户要求撰写关于风险价值的研究报告,包括一些图形和统计输出。在这项工作中,我通过创建一个包含四只基金的模型来探索copula,这些基金跟踪股票、债券、美元和商品的市场指数摘要然后,我使用该模型生成模拟值,并使用实际收益和模拟收......
  • qsort实现函数排序(2)
    qsort实现结构体排序#include<stdio.h>#include<stdlib.h>#include<string.h>structstu{ charname[20]; intage;};intcmp_by_name(void*p1,void*p2){ returnstrcmp(((structstu*)p1)->name,((structstu*)p2)->name);}voidprint(s......
  • JavaScript 中的函数式编程
    一、问题背景例子下面的代码是一个函数式编程的例子我们先观察一下里面有哪些特殊的语法点,再一一讲解constprogrammerOutput=[{name:'UncleBobby',linesOfCode:500,},{name:'SuzieQ',linesOfCode:1500,},{name:'JimmyGosl......
  • 六、函数
    本章专题脉络1、函数的基本使用1.1为什么需要函数《街霸》游戏中,每次人物出拳、出脚或跳跃等动作都需要编写50-80行的代码,在每次出拳、出脚或跳跃的地方都需要重复地编写这50-80行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将出拳、出脚或跳......
  • 字符串常用函数简易模拟
    strlensize_tMy_strlen(char*str){intcount=0;while(*str){count++;str++;}returncount;}strcpychar*my_strcpy(char*dest,constchar*src){char*ret=dest;//拷贝src指向的字符串到dest指向的空间,......
  • MySQL学习八:窗口函数(一)
    目录一、窗口函数1.窗口函数定义2.窗口函数语法3.演示表格一4.窗口的确定4.1例1:查询各班级总分4.2例2:查询各班级累计总分4.3分区子句(partitionby)4.4排序子句(orderby)4.5窗口子句(rows)4.6总体执行流程5.函数分类5.1排序类函数5.2聚合类函数5.3跨行类函数......
  • 模拟赛记录2024.03
    2024.03模拟赛记录2024.03.20TheBrickTowerMediumDivOne不考虑相同元素顺序,最优解的形式为,将原序列从小到大排序,从前往后依次放在当前答案的开头或者结尾考虑相同元素的影响,发现在贪心的同时记录当前放在首尾的同样元素的编号然后贪心的把小的编号靠前即可code//Autho......
  • 在sort中传入仿函数
    仿函数就是用来控制排列顺序的map<int,int,Compare>是这样,list.sort()也是这样.//List双向链表.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<iostream>#include<list>usingnamespacestd;structCompare{ booloperator()(constint&......