atoi()函数的应用

题目:编写程序实现字符串到整数的转换,如输入字符串“12345”,输出整数12345;即实现              atoi();

实现注意事项:此题考查的是考虑问题的全面性,在实现atoi()函数时应注意以下五点:

(1)指针为NULL;

(2)空字符串  ‘\0‘;

(3)+、- 号的处理;

(4)溢出问题;

(5)遇到异常字符怎么办;

#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <limits.h>
enum RET
{
	VALID,INVALID
};
enum RET state = VALID;
int my_atoi(const char* str)
{
	assert(str);
	int flag = 1;
	long long ret = 0;
	if (str == NULL)   //指针为NULL
	{
		return 0;
	}
	if (*str == ‘\0‘)  //空字符串
	{
		return 0;
	}
	while (isspace(*str))//空白字符处理
	{
		str++;
	}
	if (*str == ‘-‘) //+ -号处理
	{
		flag = -1;
	}
	if ((*str == ‘+‘) || (*str == ‘-‘))
	{
		str++;
	}
	while (*str)
	{
		if ((*str >= ‘0‘) &&(*str <= ‘9‘))
		{
			ret = ret * 10 + flag*(*str - ‘0‘);
			if ((ret>INT_MAX) || (ret < INT_MIN))    //处理溢出
			{
				printf("数值越界\n");
				return  0;
			}

		}
		else
		{
			state = INVALID;  //处理异常字符
			return ret;
			    
		}
		str++;
	}
	return ret;

}
int main()
{
	char arr[20];
	scanf("%s", arr);
	int ret = my_atoi(arr);
	if (state == VALID)
	{
		printf("%d\n", ret);
	}
	else 
	{
		printf("输入值非法\n");
		printf("%d\n", ret);
	}
	system("pause");
	return 0;
}
时间: 2024-08-05 11:37:28

atoi()函数的应用的相关文章

【C语言】模拟实现atoi函数

atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回.如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回0 我们在模拟实现atoi函数时,要注意以下几点: 1.字符串之前的空白问题 2.正负号 3.字符串为空时 4.

Hdu 1106 排序 (atoi函数与 strtok函数的应用

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1106 好久都没刷题了,今天突然特别怀念以前刷题的日子,所以就找了几道水题来做做~~呵呵 在写这篇博客之前呢,已经很明了自己已经大三了,时光匆忙,在还没来得及转过头来,就已经过了两年了大学,原来走了这么远了~~感觉再怎么样,大三还是不敢偷懒~~不过有时候还真是挺迷茫的说实话,在这里呢,真心希望能得到你们各位的建议,只要是对我未来就业有好处的,我都会虚心取纳,(BTW:我是学嵌入式方向的)万分感谢~~~

atoi()函数

atoi()函数的功能:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数). atoi()函数实现的代码: /* * name:xif * coder:[email protected]@yahoo.cn * time:08.20.2012 * file_name:my_atoi.c * function:int my_atoi(char* pstr)

实现atoi函数

atoi函数最关键的地方是想好测试用例: 输入为空字符串,输出为0; 输入字符串大小超过INT_MAX输出INT_MAX; 输入字符串大小小于INT_MIN输出INT_MIN; 输入字符串中含有不规则字符,中断atoi, 如"01a4" 输出1; 输入字符串开头和结尾含有空格,忽略空格,如输入"  +01  "输出1; 输入字符串开头除空格以外如果是"+"和"-",视为正确输入. class Solution { public

atoi函数(将字符串转化为int)

头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str); [函数说明]atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回. [返回值]返回转换后的整型数:如果 str 不能转换成 int 或者 str 为

atoi()函数的实现

atoi()函数的功能:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数). atoi()函数实现的代码: [cpp] view plain copy print? /* * name:xif * coder:[email protected]@yahoo.cn * time:08.20.2012 * file_name:my_atoi.c * fun

模拟实现atoi函数

atoi函数就是把一串字符串转换为int型整数的函数,通过将字符串中的字符一个一个强制类型转换,并且存入一个临时数组中,再将数组中的数字处理一下即可得到我们需要的整数. 实现这个函数的过程中,我们需要注意负数的处理,要进行一次判断,确定返回值的正负. 其他的字符按照ASCII码表进行转换即可. 下面是代码: #include<stdio.h> #include<math.h> int my_atoi(char a[],int sz) { int i = 0, count = 0, 

C语言atoi()函数:将字符串转换成int(整数)

头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为:int atoi (const char * str); [函数说明]atoi() 函数会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回. [返回值]返回转换后的整型数:如果 str 不能转换成 int 或者 str 为

有趣的atoi()函数

atoi()函数是C语言库中的一个比较有意思的函数,有趣的地方在于,他可以将数字字符串转化为相应的数字,当然我们也可以通过字符间换算转化为相应数字,但有库函数atoi()使得代码简化许多.那么atoi()怎么用呢? 1.在c语言中直接包含在头文件stdlib.h头文件中,atoi()的形式参数为指针,所以要将字符串指针来传递.注意当atoi()读取到非数字字符时将会停止转换. 2.直接将string类型的字符串用char型指针进行指向即可.同样要包含头文件stdlib.h 3.c++中atoi函

自己实现atoi函数

#include <iostream> #include <string> using namespace std; // 自己实现atoi函数的过程 int My_atoi(const char *  p); int main() { string s; cout << "请输入一个字符串:"; cin >> s; cout<<"经过转换为整形为:"<<My_atoi(s.c_str())&l