C语言库函数:atoi
实现了此功能。
int
atoi(const
char
*nptr)
函数说明:
参数nptr字符串,如果第一个非空格字符备笑存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符
\0)
字符时停止转换,返回整型数。
代码如下:
#include
<stdio.h>虚迟
#include
<string.h>
#include
<stdbool.h>
/**
*
功能:string转int
*
注意:
*
1、字符串是否为空;
*
2、忽略\t
或空格;
*
3、溢出判断;
*
4、差滚李输入字符串只有“+”或“-”号时;
*
5、扫描参数src字符串,跳过前面的空格字符,直到遇上数
字或正负符号才开始做转换,而再遇到非数字或字符串结束时
('\0')才结束转换,并将结果返回。
*/
int
convertionStringToInt(char
*src)
{
bool
flag=false
long
num=0
/*使用long类型,数据溢出情形*/
int
minus=0
if((NULL
==
src)||('\0'==
*src))
//判断如惨字符串指针是否为空
{
return
0
}
if(('\t'
==
*src)||('
'
==
*src))
//忽略tab字符和空格字符
{
src
++
}
if('-'
==
*src)
//判断是否是‘+’
或
‘-’符号
{
flag=true
src++
}
else
if('+'
==
*src)
{
src++
}
minus=flag?-1:1
while('\0'
!=
*src)
{
if(('0'
<=
*src)&&('9'
>=
*src))
{
num=
num*10+minus*((*src)-'0')
if((!flag
&&
num
>
0x7FFFFFFF)
||
(flag
&&
num
<
(signed
int)0x80000000))
//判断转换后的整型数是否溢出,注意正负数均要判断
{
num
=
0
break
}
src++
}
else
{
break
//遇到非数字字符时结束转换
}
}
return
num
}
int
main()
{
char
data[8][15]={"4673","15234234234","-3489","+9776","ab67","123bd","+","-"}
int
i=0
int
val=0
for(i=0i<8i++)
{
printf("Before
data[%ld]=%s
",i,data[i])
val=convertionStringToInt(data[i])
printf("After
Convert=%d\n",val)
}
return
0
}
方法主要有三种 转换函敬薯数、强制类型转换、利用js变量弱类型转换。转换函数: js提供了parseInt()和parseFloat()两个转换函数。前者把值转换成整数,后者把值转换亮轮者成浮点数。只有桐肢对String类型调用这些方法,这两个函数才能正确运行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)