`

atoi_字符串数字转换为整型

阅读更多

实现字符串中的数字转换为整型,具体规则见源码注释。gcc编译通过。

 

第一种代码,过程有些繁琐:

#include<stdio.h>

/* 求幂
 * 此处求幂也可以调用math.h中的函数pow(),
 * 编译时添加“-lm”参数。 */
double mypow(double x,double y)
{
	int tmp=1;
	while(y-->0)
	{
		tmp*=x;
	}
	
	return tmp;
}

/* 转化字符串中的数字字符到整数。规则如下:
 * 	1、如果字符串开始是一个字母,则返回零;
 * 	2、否则,把数字字符转换成整型数,直到遇到字母字符为止。
 */
int myatoi(const char *str)
{
	int i=0,j=0,rslt=0;

	if(*str<'0'||*str>'9') return 0;

	while(*str>='0'&&*str<='9')
	{
		str++;
		i++;
	}

	while(i-->0)
	{
		rslt+=(int)mypow(10,j++)*(*--str-'0');
	}

	return rslt;
}

int main()
{
	char *strtest1="a1234",*strtest2="6789d";

	printf("%d\n%d\n",myatoi(strtest1),myatoi(strtest2));

	return 0;
}

 

 

另一段代码,对符号等做出判断,转换思路做出优化:

#include<stdio.h>

/* 转化字符串中的数字字符到整数。规则如下:
 * 	1、如果字符串开始是一个字母,则返回零;
 * 	2、否则,把数字字符转换成整型数,直到遇到字母字符为止;
 * 	3、另有符号空格等的判断。
 */
int myatoi(const char *str)
{
	int sign=1,rslt=0;

	while(' '==*str||'\t'==*str) str++;

	if('-'==*str)
	{
		sign=-1;
		str++;
	}
	else if('+'==*str) str++;

	while('0'==*str) str++;

	if(*str<'0'||*str>'9') return 0;

	while(*str>'0'&&*str<='9')
		rslt=rslt*10+(*str++-'0');

	return sign*rslt;
}

int main()
{
	char *strtest1="  1234",\
		*strtest2="-6789d",\
		*strtest3="+0324dk",\
		*strtest4="0043  5",\
		*strtest5="-s0012";

	printf(\
		"%d\n%d\n%d\n%d\n%d\n",\
		myatoi(strtest1),\
		myatoi(strtest2),\
		myatoi(strtest3),\
		myatoi(strtest4),\
		myatoi(strtest5)\
	);

	return 0;
}
 

 

May contact with me via e-mail: AllenNewOK@126.com

 

分享到:
评论

相关推荐

    c语言字符串_数字转换函数大全

    atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型数) toascii(将整型数转换成合法的ASCII 码字符) ...

    c++将字符串转数字的实例方法

    C++字符串转化为数字的库函数 1、atoi 功 能:把一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是...

    字符串转整型

    面试必备的小程序,能把字符数组"123"转换成整型的123;

    Python 字符串转换为整形和浮点类型的方法

    Python2.6 之前:字符串转换为整形和浮点型 &gt;&gt;&gt;import string &gt;&gt;&gt;string.atoi('34.1') 34 &gt;&gt;&gt;string.atof(‘34.1') 34.1 python2.6之后:字符串转换为整形和浮点型 &gt;&gt;&gt;import string &gt;&gt;&gt;int('34.1') 34 &gt;&gt;&gt;float...

    C库函数(字符串转换篇)

    atoi 将字符串转换成整型数 atol 将字符串转换成长整型数 gcvt 将浮点型数转换为字符串,取四舍五入 strtod 将字符串转换成长整型数 strtol 将字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 toascii ...

    不用string.h库函数的,方便易用的字符串处理函数,减少库带来代码量

    //正常顺序的字符串转换为两两颠倒的字符串,若长度为奇数,补'F'凑成偶数 int gsmSerializeNumbers(const char* pSrc, char* pDst, int nSrcLength);//两两颠倒的字符串转换为正常顺序的字符串 int gsmEncode7bit...

    C++ 整型与字符串的互转方式

    字符串转整型 C的方法 cstr是char*或者const char*类型的字符串 int num = atoi(str); int num = strtol(cstr, NULL, 10); //10 表示进制 C++11的方法 void test1() { std::string str1 = "1"; std::string str2...

    C#中将字符串转换为整型的三种解决方法总结

    要将一个字符串或浮点数转换为整数,基本上有三种方法:(1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string)(3)使用int.Parse(string)或int.TryParse(string,out int) 在实际使用时,当要转换...

    C语言中一些将字符串转换为数字的函数小结

    atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); 【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测...

    Linux C 函数参考.zip

    atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) gcvt(将浮点型数转换为字符串,取四舍五入) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型...

    c语言标准库中字符转换函数和数字转换函数

    字符转换为数字: #include atoi();将字符转换为整型 例:char ch1;int i=atoi(ch1); atol();将字符转化为长整型 例:char ch2;long l=atol(ch2); atof();将字符转化为浮点型 例:char ch3;float f=atof(ch3); ...

    西电软工oop上机题目1(§6.6习题16)实验源码6.6-16.cpp

    Write a function atoi(const char*) that takes a string ...atoi()函数用于将字符串转化为整型数; 首先调用symbol函数,判断正负,然后调用atoi函数,atoi函数内先调用islegal函数判断字符串是否合格,然后从左到右

    atoi--itoa-function-prototype.rar_itoa_prototype

    字符串和整形互相转换函数atoi,itoa函数原型认识两个函数以及用法

    C语言itoa()函数和atoi()函数详解(整数转字符)

    C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。

    atoi--itoa-function-prototype.rar_prototype

    字符串和整形互相转换函数atoi,itoa函数原型 认识两个函数以及用法

    linux_c API函数大全

    atoi(将字符串转换成整型数) 22 2.3 22 atol(将字符串转换成长整型数) 22 2.4 23 gcvt(将浮点型数转换为字符串,取四舍五入) 23 2.5 24 strtod(将字符串转换成浮点数) 24 2.6 24 strtol(将字符串转换成长...

    明解C语言(第3版)入门篇.[日]柴田望洋(带详细书签).pdf 【半高清】

    atoi函数、atol函数、atof函数:转换字符串 333 总结 336 第12章 结构体 339 12-1 结构体 340 数据关联性 340 结构体 342 结构体成员和运算符 344 成员的初始化 345 结构体成员和-&gt;运算符 346 结构体和...

    c函数速查

    一个非常好用的c函数查询工具 例: 函数名: atoi 功 能: 把字符串转换成长整型数 用 法: int atoi(const char *nptr); 程序例: #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; &lt;br&gt;int main...

    计算器 mfc 代码

    //将字符串变量转换成整型值 FirstInput.ReleaseBuffer(-1); NewInputValue=atoi(m_Display.GetBuffer(24)); //将字符串变量转换成整型值 m_Display.ReleaseBuffer(-1); switch(CompuType) //开关语句判断...

    你必须知道的495个C语言问题

    4.14 怎样在整型和指针之间进行转换?能否暂时把整数放入指针变量中,或者相反? *4.15 我怎样把一个int变量转换为char*型?我试了类型转换,但是不行。 第5章 空指针 空指针和空指针常量 5.1 臭名昭著的空...

Global site tag (gtag.js) - Google Analytics