c语言,字符串转换成整数
2016-07-08 21:26
239 查看
c语言的数字字符串转换为整数,1.可接受“123 2123”处理为1232123;2.空指针、正负号、非纯数字字符串、数据越界溢出的错误处理。
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
//子函数的声明
int StrToInt(char * string);
void main()
{
//变量的声明
char str[20];//边界值-2147483648和2147483647,最多需要12个字符
int result;
//输入部分
printf("请输入:");
//接受输入数据
gets(str);//scanf接受到空格时中断,但gets不,例如“244 754”
//实现
result = StrToInt(str);
//输出
if(result != 0)
{
printf("结果:%d\n",result);
}
}
//把一个字符串转换成整数
int StrToInt(char* string)
{
int sign = 1;//1代表+正数,-1代表负数
__int64 number = 0;//声明为long long类型,防止数据溢出
//1.空指针的判断
if(NULL == string)
{
printf("空指针异常!\n");
return 0;
}
//2.正负号int
if(*string =='+')
{
//设置sign标记
sign = 1;
*string++;
}
if( *string =='-')
{
//设置sign标记
sign = -1;
*string++;
}
//3.由于返回值为0做了异常处理,真正的"0"需要特殊处理
if(string == "0")
{
printf("结果:0\n");
}
while(*string != '\0')
{
int normalflag0 =1;
//4.空格判断
if(*string == ' ' || *string == '\t')
{
*string++;
}
//5.非数字字符时,错误处理
if(*string < '0' || *string > '9')
{
printf("包含非数字字符!\n");
number = 0;
break;
}
//6.边界值,最大正整数和最小负整数
number = number * 10 + sign*(*string - '0');
if((sign==1 && number>INT_MAX)|| (sign==-1 && number<INT_MIN))
{
//INT_MAX和INT_MIN的头文件是<limits.h>表示int所能表示的最大和最小的数
printf("有符号整型超过溢出!最小到-7fffffff-1即-2147483648,最大到7fffffff即2147483647\n");
number = 0;
break;
}
string++;
}
return (int)number;
}
#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
//子函数的声明
int StrToInt(char * string);
void main()
{
//变量的声明
char str[20];//边界值-2147483648和2147483647,最多需要12个字符
int result;
//输入部分
printf("请输入:");
//接受输入数据
gets(str);//scanf接受到空格时中断,但gets不,例如“244 754”
//实现
result = StrToInt(str);
//输出
if(result != 0)
{
printf("结果:%d\n",result);
}
}
//把一个字符串转换成整数
int StrToInt(char* string)
{
int sign = 1;//1代表+正数,-1代表负数
__int64 number = 0;//声明为long long类型,防止数据溢出
//1.空指针的判断
if(NULL == string)
{
printf("空指针异常!\n");
return 0;
}
//2.正负号int
if(*string =='+')
{
//设置sign标记
sign = 1;
*string++;
}
if( *string =='-')
{
//设置sign标记
sign = -1;
*string++;
}
//3.由于返回值为0做了异常处理,真正的"0"需要特殊处理
if(string == "0")
{
printf("结果:0\n");
}
while(*string != '\0')
{
int normalflag0 =1;
//4.空格判断
if(*string == ' ' || *string == '\t')
{
*string++;
}
//5.非数字字符时,错误处理
if(*string < '0' || *string > '9')
{
printf("包含非数字字符!\n");
number = 0;
break;
}
//6.边界值,最大正整数和最小负整数
number = number * 10 + sign*(*string - '0');
if((sign==1 && number>INT_MAX)|| (sign==-1 && number<INT_MIN))
{
//INT_MAX和INT_MIN的头文件是<limits.h>表示int所能表示的最大和最小的数
printf("有符号整型超过溢出!最小到-7fffffff-1即-2147483648,最大到7fffffff即2147483647\n");
number = 0;
break;
}
string++;
}
return (int)number;
}
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 数据库链接字符串查询网站
- 如何写好 C main 函数
- Flex字符串比较 还有Flex字符串操作
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua和C语言的交互详解
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串
- 字符串聚合函数(去除重复值)
- Ruby中的字符串编写示例
- 总结的5个C#字符串操作方法分享
- sqlserver中求字符串中汉字的个数的sql语句
- sql server字符串非空判断实现方法
- C#算法函数:获取一个字符串中的最大长度的数字
- VBS的字符串及日期操作相关函数
- C#实现将千分位字符串转换成数字的方法
- jquery 删除字符串最后一个字符的方法解析