类型转换 atoi, itoa, atof
2018-02-27 16:06
288 查看
字符型 to 整型
int atoi(char s[]) { int i, sign, n; for(i = 0; isspace(s[i]); i++) /*跳过空白符*/ ; sign = (s[i] == '-') ? -1 : 1; if(s[i] == '+' || s[i] == '-') /*跳过符号*/ i++; for(n = 0; isdigit(s[i]); i++) n = 10 * n + (s[i] - '0'); return sign * n; }
整型 to 字符型
void itoa(int n, char s[]) { int i, sign; if((sign = n) < 0) /*记录符号*/ n = -n; /*使n成为正数*/ i = 0; do{ /*以反序生成数字*/ s[i++] = n % 10 + '0'; /*取下一个数字*/ }while((n /= 10) > 0); /*删除该数字*/ if(sign < 0) s[i++] = '-'; s[i] = '\0'; reverse(s); } void reverse(char s[]) { int c, i, j; for(i = 0, j = strlen(s); i < j; i++, j--){ c = s[i]; s[i] = s[j]; s[j] = c; } }
字符型 to 浮点型(可处理科学计数法)
double atof(char s[]) { double val, power, spower; int i, sign; int expn = 0; for(i = 0; isspace(s[i]); i++) /*跳过空白符*/ ; sign = (s[i] == '-') ? -1 : 1; /*记录符号*/ if(s[i] == '+' || s[i] == '-') /*跳过符号*/ i++; for(val = 0.0; isdigit(s[i]); i++) /*处理整数部分*/ val = 10.0 * val + (s[i] - '0'); if(s[i] == '.') /*跳过小数点*/ i++; for(power = 1.0; isdigit(s[i]); i++){ /*处理小数部分*/ val = 10.0 * val + (s[i] - '0'); power *= 10.0; } if(s[i] == 'e' || s[i] == 'E'){ /*处理科学计数法表示的情况*/ if(s[++i] == '-'){ /*(彻底)跳过e或E*/ ++i; /*跳过符号*/ for(; isdigit(s[i]); i++) /*处理指数部分*/ expn = 10 * expn + (s[i] - '0'); power = pow(10, expn) * power; } else{ /*包含有'+'和没有符号两种情况*/ if(s[i] == '+') i++; for(; isdigit(s[i]); i++) /*处理指数部分*/ expn = 10 * expn + (s[i] - '0'); power = power / pow(10, expn); } } return sign * val / power; }tip: 标准库(<stdlib.h>)中提供了具有类似功能的函数atoi, itoa, atof
相关文章推荐
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- MFC数据类型转换 _itoa atoi、atof、itoa、itow _itoa_s
- C++中,int和char互转函数_itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- C++ 类型转换 atoi atol atof <stdlib.h>, itoa ftoa char <---> string
- stringstream/snprintf/sscanf/atoi/itoa数据类型转换比较
- 关于转换的问题,平时用到一些 内置类型之间的 转换方法如atoi atof itoa sprintf 等 istrstream ostrstream strstream【2013.10.21】
- atoi,atol,strtod,strtol,strtoul实现类型转换
- atoi,atol,strtod,strtol,strtoul实现类型转换
- atoi,atol,strtod,strtol,strtoul实现类型转换