`

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

 

分享到:
评论

相关推荐

    OJ_整型字符串排序

    为了解决这个问题,我们可以首先将整型字符串转换为整数,然后再进行排序。这里我们可以使用`atoi`或`strtol`函数将字符串转换为整数。转换完成后,可以使用常见的排序算法,如冒泡排序、选择排序、插入排序、快速...

    boost之lexical_cast之字符串转换成数值.rar_Boost_boost_字符串转换成数值

    在C++编程中,有时我们需要将字符串转换为数值类型,如整型、浮点型等,反之亦然。Boost库提供了一个非常实用的工具——`lexical_cast`,它简化了这个过程,使得转换更加安全和方便。本篇将详细介绍Boost库中的`...

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

    5. **strtol**:此函数用于将字符串转换成长整型数,可以指定基数(2-36),允许用户控制转换的基数,比如二进制、八进制、十六进制等。它返回一个长整型数,并提供指针指向未转换的字符串剩余部分。 6. **strtoul*...

    C/C++字符串,字符转数字,数字转字符

    - atoi():将字符串转换为整数。 - atol():将字符串转换为长整数。 - strtod():将字符串转换为双精度浮点数。 上述函数中,itoa(), ltoa()和ultoa()函数在标准C库中没有定义,它们是许多编译器提供的非标准扩展,...

    string_字符串_

    2. **字符串到数值的转换**:提供从字符串解析数字的方法,例如`atoi`、`atof`等。 3. **字符串比较**:实现不区分大小写的字符串比较,或者根据特定规则的字符串排序。 4. **字符串清理**:去除字符串两端的空白...

    C语言字符串数字提出.zip

    C语言提供了`atoi()`,`atol()`,`atof()`等函数将字符串转换成对应的整型、长整型和浮点型数值。反之,`sprintf()`和`snprintf()`可以将数值转换成字符串。例如: ```c #include int main() { char str[20]; ...

    在vc中如何进行类型转换,比如把整型转换为字符串型或从字符串转换为整型1.pdf

    - 使用atoi()函数:atoi()函数可以把C风格的字符串转换为整型。例如,int i = atoi("123");会将字符串"123"转换为整数123。 - 使用atol()函数:atol()函数和atoi()类似,不过它用来转换的是长整型(long)。 - 使用...

    C语言字符串和数字转换函数

    - **功能描述**: `atoi` 函数用于将一个字符串转换成整型数。它的行为类似于 `atof`,但最终返回的是整数值。 - **返回值**: 返回转换后的整数。 - **示例代码**: ```c #include #include int main() { ...

    c语言数字字符串转化.pdf

    atoi()函数可以将一个字符串转换成整型数。该函数会扫描参数字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。 例子: ```c #...

    c语言字符串与数字转换函数

    2. atoi() 函数:将字符串转换成整型数 atoi() 函数的定义在stdlib.h头文件中,函数原型为:int atoi(const char *nptr); atoi() 函数会扫描参数 nptr 字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始...

    在vc中如何进行类型转换比如把整型转换为字符串型或从字符串转换为整型教材.pdf

    `itoa`函数将整型转换为字符串,`atoi`将字符串转换为整型,`atol`将字符串转换为长整型,而`atof`则是将字符串转换为双精度浮点型。这些函数在使用时需要包含相应的头文件,并要注意其返回类型。 转换为字符串型的...

    字符串转换为对应数

    - **`atoi`**:将字符串转换为整型数(int),但不支持指定进制。 - **`atol`**:将字符串转换为长整型数(long int),也不支持指定进制。 - **`atof`**:将字符串转换为浮点数(double)。 #### 五、总结 通过...

    C中数字与字符串转换方法.doc

    - `atol()`, `_atol_l()`, `_wtol()`: 类似地,这些函数用于将字符串转换为长整型(`long`)。 - `_atoi64()`, `_atoi64_l()`, `_wtoi64()`, `_wtoi64_l()`: 用于将字符串转换为64位整数(`__int64`)。 - `atof...

    字符串转整型

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

    C字符串与整型之间的转换

    这个主题包括了将字符串转换为整数(如`atoi()`函数)和将整数转换为字符串(如`itoa()`函数或`printf()`格式化输出)。下面,我们将详细探讨这些转换方法以及需要注意的细节。 首先,我们来看如何将字符串转换为...

    C语言实现将字符串转换为数字的方法

    例如,当使用`strtoul()`将超出无符号长整型范围的字符串转换为数字时,它会返回最大值`ULONG_MAX`(通常为4294967295),并将指针类型的`leftover`参数设置为字符串中导致溢出的字符位置。同时,全局变量`errno`会...

    字符串和数字的转换(c/c++多种实现方式)

    **1.2 将字符串转换为数字** ```cpp #include #include int stringToNum(const std::string& str) { std::istringstream in(str); // 构造一个对象来解析字符串 int num; in &gt;&gt; num; // 从字符串中读取整数 ...

Global site tag (gtag.js) - Google Analytics