返回
首页>资讯

atoi函数怎么用(如何用C语言实现atoi()函数)

时间: 2023-04-11 03:00:08

atoi函数怎么用

将字符串转换成整型数。

该函数应用在计算机程序和办公软件中。函数会扫描参数nptr字符串,跳过前面的空白字符,通过isspace函数来检测,遇上数字、正负符号才开始做转换,而在遇到非数字、字符串结束时才结束转换,并将结果返回。如果nptr不能转换,而是空字符串,那么将返回零。

如何用C语言实现atoi()函数

要善用百度。。。就有atoi这个词条,里面有c语言实现的源代码(其实是c++,不过唯一的不同只是它的字符串定义为了const,即常量,表示在函数里不允许改变此字符串内容)
我在这里加上注释简单说明一下该源码
int
my_atoi(const
char
*str){
int
result;
//保存返回结果的
int
signal
=
1;
//保存符号的,默认正数
//判断第一个数字是否合法
if((*str>='0'&&*str<='9')||*str=='-'||*str=='+'){
//如果是-,符号变为-1,指针右移
//如果是+,指针右移(总之指向了第一个数字)
if(*str=='-'||*str=='+'){
if(*str=='-')
signal
=
-1;
str++;
}
}
else
return
0;//第一个不是+,-或数字,非法返回0
//这里就是转换,是数学的问题就不解释了
while(*str>='0'&&*str<='9')
result
=
result*10+(*str++
-'0');
return
signal*result;
}
不过这个程序,如果字符串是非法的话,他也会返回直到非法字符之前的数值
比如123abc
返回值就是123

c语言atoi与itoa用法以及超过long long int 型变量整数加减法

大整数的计算可以通过模运算来进行简化,也可以将其作为字符串读入,然后分段运算之后再进行拼接。
附:
atoi和itoa的示范代码如下:
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
char *s; int ix;
char buffer[20];
inti = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
s = "-9885 pigs";/* Test of atoi */
ix = atoi( s );
printf( "atoi test: ASCII string: %s integer: %d ", s, ix );
_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s ", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s ", i, buffer );
_itoa( i, buffer, 2);
printf( "String of integer %d (radix 2): %s ", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s ", l,
buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s ", ul,
buffer );
}
输出结果:
atoi test: ASCII string: -9885 pigs integer: -9885
String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 16): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2

声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

猜你喜欢

本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有

邮箱:daokedao3713@qq.com

备案号:鲁ICP备2022001955号-4

网站地图