您的位置:首页 > 其它

字符串转整数

2015-08-04 11:20 459 查看
个人参考http://blog.csdn.net/v_july_v/article/details/9024123写的字符串转整数函数。思路还是一样的,欢迎大家点评。

#include <stdlib.h>

#include <stdio.h>

bool isspace(int x)

{

if(x=='\b'||x=='\t'||x=='\r'||x=='\f'||x=='\n'||x==' ')

return true;

else

return false;

}

bool isdigit(int x)

{

if(x>='0'&&x<='9')

return true;

else

return false;

}

int StrToInt(const char *str)

{

//------系统常量-------

static const int MAX=INT_MAX/10;

static const int MAX_R=INT_MAX%10;

int num=0;

bool minus=false;

bool overflow=false;

//1.检测是否为空指针

if(str!=NULL)

{

printf("非空字符串\n");

const char *digit=str;

//2.检测字符串前存在空格则继续检测

while(isspace((int)*digit))digit++;

//3.正负号检测

if(*digit=='+')

digit++;

else if(*digit=='-')

{

digit++;

minus=true;

}

while(*digit!='\0')

{

//4.数字字符判断

if(*digit>='0'&&*digit<='9')

{

//5.溢出判断

if(num>MAX||(num==MAX&&(*digit -'0')>7))

{

//num=INT_MAX;

overflow=true;

break;

}

num=num*10+(*digit -'0');

digit++;

}

else

{

break;

}

}

}

else

{

printf("空字符串");

}

//6.修正结果为正数还是负数

if(overflow==true)

return minus==true?
INT_MIN:INT_MAX;

else

return minus==true?
-num:num;

}

int main(void)

{

int m,n;

char *str = "123456789.67";

char *str_t="2147483648";//NULL;

m = StrToInt(str_t);

n = atoi(str);

printf("int=%d,%d\n",n,m);

while(1);

return 0;

}#include <stdlib.h>

#include <stdio.h>

bool isspace(int x)

{

if(x=='\b'||x=='\t'||x=='\r'||x=='\f'||x=='\n'||x==' ')

return true;

else

return false;

}

bool isdigit(int x)

{

if(x>='0'&&x<='9')

return true;

else

return false;

}

int StrToInt(const char *str)

{

//------系统常量-------

static const int MAX=INT_MAX/10;

static const int MAX_R=INT_MAX%10;

int num=0;

bool minus=false;

bool overflow=false;

//1.检测是否为空指针

if(str!=NULL)

{

printf("非空字符串\n");

const char *digit=str;

//2.检测字符串前存在空格则继续检测

while(isspace((int)*digit))digit++;

//3.正负号检测

if(*digit=='+')

digit++;

else if(*digit=='-')

{

digit++;

minus=true;

}

while(*digit!='\0')

{

//4.数字字符判断

if(*digit>='0'&&*digit<='9')

{

//5.溢出判断

if(num>MAX||(num==MAX&&(*digit -'0')>7))

{

//num=INT_MAX;

overflow=true;

break;

}

num=num*10+(*digit -'0');

digit++;

}

else

{

break;

}

}

}

else

{

printf("空字符串");

}

//6.修正结果为正数还是负数

if(overflow==true)

return minus==true?
INT_MIN:INT_MAX;

else

return minus==true?
-num:num;

}

int main(void)

{

int m,n;

char *str = "123456789.67";

char *str_t="2147483648";//NULL;

m = StrToInt(str_t);

n = atoi(str);

printf("int=%d,%d\n",n,m);

while(1);

return 0;

}#include <stdlib.h>

#include <stdio.h>

bool isspace(int x)

{

if(x=='\b'||x=='\t'||x=='\r'||x=='\f'||x=='\n'||x==' ')

return true;

else

return false;

}

bool isdigit(int x)

{

if(x>='0'&&x<='9')

return true;

else

return false;

}

int StrToInt(const char *str)

{

//------系统常量-------

static const int MAX=INT_MAX/10;

static const int MAX_R=INT_MAX%10;

int num=0;

bool minus=false;

bool overflow=false;

//1.检测是否为空指针

if(str!=NULL)

{

printf("非空字符串\n");

const char *digit=str;

//2.检测字符串前存在空格则继续检测

while(isspace((int)*digit))digit++;

//3.正负号检测

if(*digit=='+')

digit++;

else if(*digit=='-')

{

digit++;

minus=true;

}

while(*digit!='\0')

{

//4.数字字符判断

if(*digit>='0'&&*digit<='9')

{

//5.溢出判断

if(num>MAX||(num==MAX&&(*digit -'0')>7))

{

//num=INT_MAX;

overflow=true;

break;

}

num=num*10+(*digit -'0');

digit++;

}

else

{

break;

}

}

}

else

{

printf("空字符串");

}

//6.修正结果为正数还是负数

if(overflow==true)

return minus==true?
INT_MIN:INT_MAX;

else

return minus==true?
-num:num;

}

int main(void)

{

int m,n;

char *str = "123456789.67";

char *str_t="2147483648";//NULL;

m = StrToInt(str_t);

n = atoi(str);

printf("int=%d,%d\n",n,m);

while(1);

return 0;

}#include <stdlib.h>

#include <stdio.h>

bool isspace(int x)

{

if(x=='\b'||x=='\t'||x=='\r'||x=='\f'||x=='\n'||x==' ')

return true;

else

return false;

}

bool isdigit(int x)

{

if(x>='0'&&x<='9')

return true;

else

return false;

}

int StrToInt(const char *str)

{

//------系统常量-------

static const int MAX=INT_MAX/10;

static const int MAX_R=INT_MAX%10;

int num=0;

bool minus=false;

bool overflow=false;

//1.检测是否为空指针

if(str!=NULL)

{

printf("非空字符串\n");

const char *digit=str;

//2.检测字符串前存在空格则继续检测

while(isspace((int)*digit))digit++;

//3.正负号检测

if(*digit=='+')

digit++;

else if(*digit=='-')

{

digit++;

minus=true;

}

while(*digit!='\0')

{

//4.数字字符判断

if(*digit>='0'&&*digit<='9')

{

//5.溢出判断

if(num>MAX||(num==MAX&&(*digit -'0')>7))

{

//num=INT_MAX;

overflow=true;

break;

}

num=num*10+(*digit -'0');

digit++;

}

else

{

break;

}

}

}

else

{

printf("空字符串");

}

//6.修正结果为正数还是负数

if(overflow==true)

return minus==true?
INT_MIN:INT_MAX;

else

return minus==true?
-num:num;

}

int main(void)

{

int m,n;

char *str = "123456789.67";

char *str_t="2147483648";//NULL;

m = StrToInt(str_t);

n = atoi(str);

printf("int=%d,%d\n",n,m);

while(1);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: