c语言,字符串转换成整数

来源:互联网 发布:java instanceof 编辑:程序博客网 时间:2024/06/06 16:56

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.正负号intif(*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;}


0 0