自己用C语言写itoa 函数和atoi函数

article/2025/9/28 22:44:08

有些库中有atoi()函数,但没有itoa()函数,怎么办?自己写啊!!!

一:先来看看库atoi()函数和itoa()函数的用法:

1.atoi 是把字符串转换成整型数的一个函数,int atoi(const char *nptr) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进)等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而在遇到非数字或字符串结束符('\0')才结束转换,并将结果返回。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。

代码实现如下:

//vs2013里调用printf函数请使用预处理命令#define _CRT_SECURE_NO_WARNINGS
int main()
{char a[] = "-100";char b[] = "123";int c;c = atoi(a) + atoi(b);printf("c=%d\n", c);getchar();return 0;
}

2.itoa 为c语言的一个函数。itoa 函数是一个广泛应用的,从非标准扩展到标准的C语言。它不能被移植,因为它不是标准定义下的C语言,但是,编译器通常在一个不遵循程式标准的模式下允许其通过header ,因为它是一个从逻辑对应到标准库的函数。itoa 取整数输入值,并将其转换为相应进制数字的字符串。

char *itoa( int value, char *string,int radix); 
原型说明:
value:欲转换的数据。
string:目标字符串的地址。
radix:转换后的进制数,可以是10进制、16进制等。
功能:

把一个整数转换为字符串

代码实现如下:

int main(void)
{int number = 12345;char string[32];itoa(number, string, 10);printf("integer = %d \nstring = %s\n", number, string);getchar();return 0;
}

二:自己来实现itoa()函数和atoi()函数

1.自己来实现itoa,直接上代码:

void my_itoa(long i, char *string)
{int power = 0, j = 0;j = i;for (power = 1; j>10; j /= 10)power *= 10;for (; power>0; power /= 10){*string++ = '0' + i / power;i %= power;}*string = '\0';printf("%s\n", string);
}
int main()
{char string[20];long timestamp = 1526567094;my_itoa(timestamp, string);printf("%s\n", string);getchar();return 0;
}

2.1.自己来实现atoi,直接上代码:

//char *a = "12345";//是一个char *型变量,位于常量存储区 不可更改指针指向的数据
//char a[] = "12345";//一个char型数组
int my_atoi(char *str)
{if (!str)return -1;bool bMinus = false;int result = 0;if (('0'>*str || *str>'9') && (*str == '+' || *str == '-')){if (*str == '-')bMinus = true;*str++;}while (*str != '\0'){if ('0'> *str || *str>'9')break;elseresult = result * 10 + (*str++ - '0');}if (*str != '\0')//no-normal end  return -2;return bMinus ? -result : result;
}
int main(void)
{char c1[] = "12345";char c2[] = "-12345";char c3[] = "bat-123";char c4[] = "+123abc";printf("c1=%d\n", my_atoi(c1));printf("c2=%d\n", my_atoi(c2));printf("c3=%d\n", my_atoi(c3));printf("c4=%d\n", my_atoi(c4));getchar();return 0;
}


http://chatgpt.dhexx.cn/article/iECXt0aL.shtml

相关文章

C++之sprintf函数(itoa函数)

头文件:stdio.h 原型 int sprintf( char *buffer, const char *format, [ argument] … ); 参数列表 buffer:char型指针,指向将要写入的字符串的缓冲区。 format:格式化字符串。 [argument]…:可选参数,可以…

【c语言】字符串类型转换 | itoa函数的使用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

PostGIS 入门

PostGIS 快速入门 PostGIS 是 PostgreSQL 关系数据库的空间操作扩展。它为 PostgreSQL 提供了存储、查询和修改空间关系的能力。本文中 ‘PostgreSQL’ 指代基本的关系数据库功能&#xff0c;而 ‘PostGIS’ 指代扩展的空间操作特性。 客户端&#xff0d;服务器构架 PostgreSQL…

PostGis路径分析

一、导入数据 建立PostGis数据库。 使用sample数据库做模板。 导入纽约公路矢量图层到PostGis。地图下载位置 二、生成拓扑 要生成最佳路径&#xff0c;首先要生成合法的拓扑。 生成拓扑前&#xff0c;需要添加两个字段&#xff0c;用来存储线段的首尾编号 -- Add "…

4.PostGIS

SELECT ST_GeometryFromText(POINT(116.39088 39.90763),4326); SELECT ST_GeomFromText(POINT(116.39088 39.90763),4326); SELECT ST_PointFromText(POINT(116.39088 39.90763),4326); 1、创建点类型的表&#xff0c;类型不要选择postgresql提供的空间数据类型&#xff0c;…

Postgis使用

Postgis使用 一、安装与配置 先查看目前yum源中有哪些版本可用&#xff0c;并安装合适的版本 yum search postgis安装Postgresql 10对应的版本PostGIS yum install -y postgis24_10二、创建GIS数据库 PostGIS是Postgresql的一个扩展&#xff0c;创建数据库并加载PostGIS扩…

PostGIS 路线规划

❤️通过SQL存储过程&#xff0c;利用PostGIS实现路线规划❤️ pgRouting扩展了PostgreSQL/PostGIS地理空间数据库&#xff0c;以提供地理空间路由功能。 文章目录 1、环境配置2、导入shp文件2.1、打开PostGis Shapefile插件2.2、连接数据库2.3、添加并导入矢量数据2.4、查看数…

postgis启动_PostGIS 快速入门(转)

PostGIS 是 PostgreSQL 关系数据库的空间操作扩展。它为 PostgreSQL 提供了存储、查询和修改空间关系的能力。本文中 ‘PostgreSQL’ 指代基本的关系数据库功能&#xff0c;而 ‘PostGIS’ 指代扩展的空间操作特性。 客户端&#xff0d;服务器构架 PostgreSQL 同众多数据库产品…

postgis 返回 geojson

GeoJSON 特征集合&#xff1a; {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [102.0, 0.5]},"properties&…

PostGIS 安装

安装 PostgreSQL 数据库 Windows 下载安装包 运行安装包即可 Linux 以 Ubuntu 为例, 其他版本参考官方下载页面 通过 APT 仓库安装 sudo sh -c echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d…

PostGIS安装

1首先安装PostgreSQL &#xff0c;安装完后 services.msc打开服务列表&#xff0c;找到postgresql-x64-14启动&#xff0c;如果启动不了&#xff0c;设置本地系统账户登录 2打开pgAdmin4,创建服务器 参数设置可以参考帮助文档 3安装postgis,下载地址 Index of /postgis/windows…

PostGIS 笔记

空间数据库 定义&#xff1a;存储、操作空间数据的数据库。 空间数据特点 空间数据类型是指点、线、多边形等形状&#xff1b;提供用于空间操作的高效处理的多维空间索引&#xff1b;提供用于查询空间属性和关系额空间函数。 发展历程 第1代 在传统的 GIS 实施中&#xff0c;所…

PostGIS

一、ArcGISPostGIS 打开ArcCatalog目录&#xff0c;双击添加数据库连接&#xff0c;进入数据库连接窗口。数据库类型选择PostgreSQL&#xff0c;输入实例&#xff08;安装PostgreSQL的服务器名称或IP地址&#xff09;、用户名、密码&#xff0c;以上信息无误&#xff0c;点击数…

PostGIS的安装与初步使用

想学习postgis推荐看我翻译的官方教程文档&#xff1a;https://blog.csdn.net/qq_35732147/article/details/85256640 目录 一、安装PostGIS 1.下载安装程序 2.安装PostgreSQL 二、创建空间数据库 1.打开pgAdmin 4 2.登录到服务器 3.创建空间数据库 三、导入空间数据 1.获取…

PostGIS(1):PostGIS概述

作为对象关系型数据库PostGreSQL的拓展模块&#xff0c;PostGIS可用于存储GIS数据&#xff0c;并提供了对基于GiST的R树索引支持、以及面向GIS对象的分析和处理相关的函数。 以下是PostGIS官网对其特征的介绍&#xff0c; &#xff08;1&#xff09; 先看一下百度对PostGIS的介…

PostGIS总结

PostGreSQL&#xff08;三&#xff09;PostGISPostGreSQL&#xff08;四&#xff09;PostGIS-空间数据存储PostGreSQL&#xff08;五&#xff09;PostGIS-常用函数PostGreSQL&#xff08;六&#xff09;PostGIS-空间连接和空间索引PostGreSQL&#xff08;七&#xff09;PostGIS…

postgis学习

以后估计会长期从事gis相关的工作&#xff0c;postgis作为一款功能比较强大的gis数据库还是需要好好学习一下的。虽然几何数据存储用任何一种类型的数据库都可以自行实现&#xff0c;但也仅仅只是存储&#xff0c;后续的坐标转换、空间分析等功能如果都要一一自己实现&#xff…

【笔试题】求最小公倍数 C++(两种方法)

题目 本题链接&#xff1a;求最小公倍数 正整数A和正整数B 的最小公倍数是指能被A和B整除的最小的正整数值&#xff0c;设计一个算法&#xff0c;求输入A和B的最小公倍数。 输入描述&#xff1a; 输出描述&#xff1a; 示例1&#xff1a; 解题思路一&#xff1a; 暴力破解 …

多个数求最小公倍数详解!

最小公倍数 既然想算最小公倍数&#xff0c;首先要清楚最小公倍数的求法&#xff0c;还有最大公约数的求法 最小公倍数*最大公约数两数乘积 有了公式&#xff0c;我们很清楚可以知道了&#xff0c;只要有最大公约数就可以求出最小公倍数&#xff0c;因为两数乘积肯定是已知的&a…

最大公约数(GCD) 与 最小公倍数(LCM)的 定义、关系、求法

最大公约数 与 最小公倍数 约数 和 倍数最大公约数最小公倍数 最大公约数与最小公倍数的关系求最大公约数、最小公倍数例一例二 约数 和 倍数 如果数 a a a能被数 b b b整除&#xff0c; a a a就叫做 b b b的倍数&#xff0c; b b b就叫做 a a a的约数。 约数和倍数都表示一个…