300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > c语言字符怎么变成整数 c语言 字符串转换成整数

c语言字符怎么变成整数 c语言 字符串转换成整数

时间:2022-09-03 01:41:07

相关推荐

c语言字符怎么变成整数 c语言 字符串转换成整数

c语言的数字字符串转换为整数,1.可接受“123 2123”处理为1232123;2.空指针、正负号、非纯数字字符串、数据越界溢出的错误处理。

#include

#include

#include

//子函数的声明

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_MAX和INT_MIN的头文件是表示int所能表示的最大和最小的数

printf("有符号整型超过溢出!最小到-7fffffff-1即-2147483648,最大到7fffffff即2147483647\n");

number = 0;

break;

}

string++;

}

return (int)number;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。