实现字符串中的数字转换为整型,具体规则见源码注释。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
分享到:
相关推荐
atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型数) toascii(将整型数转换成合法的ASCII 码字符) ...
C++字符串转化为数字的库函数 1、atoi 功 能:把一字符串转换为整数 用 法:int atoi(const char *nptr); 详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是...
面试必备的小程序,能把字符数组"123"转换成整型的123;
Python2.6 之前:字符串转换为整形和浮点型 >>>import string >>>string.atoi('34.1') 34 >>>string.atof(‘34.1') 34.1 python2.6之后:字符串转换为整形和浮点型 >>>import string >>>int('34.1') 34 >>>float...
atoi 将字符串转换成整型数 atol 将字符串转换成长整型数 gcvt 将浮点型数转换为字符串,取四舍五入 strtod 将字符串转换成长整型数 strtol 将字符串转换成长整型数 strtoul 字符串转换成无符号长整型数 toascii ...
//正常顺序的字符串转换为两两颠倒的字符串,若长度为奇数,补'F'凑成偶数 int gsmSerializeNumbers(const char* pSrc, char* pDst, int nSrcLength);//两两颠倒的字符串转换为正常顺序的字符串 int gsmEncode7bit...
字符串转整型 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...
要将一个字符串或浮点数转换为整数,基本上有三种方法:(1)使用强制类型转换:(int)浮点数 (2)使用Convert.ToInt32(string)(3)使用int.Parse(string)或int.TryParse(string,out int) 在实际使用时,当要转换...
atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * str); 【函数说明】atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测...
atoi(将字符串转换成整型数) atol(将字符串转换成长整型数) gcvt(将浮点型数转换为字符串,取四舍五入) strtod(将字符串转换成浮点数) strtol(将字符串转换成长整型数) strtoul(将字符串转换成无符号长整型...
字符转换为数字: #include atoi();将字符转换为整型 例:char ch1;int i=atoi(ch1); atol();将字符转化为长整型 例:char ch2;long l=atol(ch2); atof();将字符转化为浮点型 例:char ch3;float f=atof(ch3); ...
Write a function atoi(const char*) that takes a string ...atoi()函数用于将字符串转化为整型数; 首先调用symbol函数,判断正负,然后调用atoi函数,atoi函数内先调用islegal函数判断字符串是否合格,然后从左到右
字符串和整形互相转换函数atoi,itoa函数原型认识两个函数以及用法
C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。
字符串和整形互相转换函数atoi,itoa函数原型 认识两个函数以及用法
atoi(将字符串转换成整型数) 22 2.3 22 atol(将字符串转换成长整型数) 22 2.4 23 gcvt(将浮点型数转换为字符串,取四舍五入) 23 2.5 24 strtod(将字符串转换成浮点数) 24 2.6 24 strtol(将字符串转换成长...
atoi函数、atol函数、atof函数:转换字符串 333 总结 336 第12章 结构体 339 12-1 结构体 340 数据关联性 340 结构体 342 结构体成员和运算符 344 成员的初始化 345 结构体成员和->运算符 346 结构体和...
一个非常好用的c函数查询工具 例: 函数名: atoi 功 能: 把字符串转换成长整型数 用 法: int atoi(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> <br>int main...
//将字符串变量转换成整型值 FirstInput.ReleaseBuffer(-1); NewInputValue=atoi(m_Display.GetBuffer(24)); //将字符串变量转换成整型值 m_Display.ReleaseBuffer(-1); switch(CompuType) //开关语句判断...
4.14 怎样在整型和指针之间进行转换?能否暂时把整数放入指针变量中,或者相反? *4.15 我怎样把一个int变量转换为char*型?我试了类型转换,但是不行。 第5章 空指针 空指针和空指针常量 5.1 臭名昭著的空...