- atoi
int atoi( const char* str )
函数功能:
- 解析 str 字符串,将其内容解释为整数。
- 将字符串转换为整数。
函数返回值:
- 返回 int 类型的值。
说明:
- 首先丢弃尽可能多的空白字符(如isspace中的空白字符),直到找到第一个非空白字符。然后,从这个字符开始,接受一个可选的初始加号或减号,后面跟着尽可能多的以10为基数的数字,并将它们解释为一个数值。
- 函数返回 int 类型的值或通过将输入字符解释为数字产生的long值
- 如果 str 字符串中的第一个非空白字符序列不是一个有效的整数,或者为空或它只包含空白字符而不存在这样的序列,则不执行转换并返回0。
- 返回值在溢出时未定义,所以 atoi 输入的 str 字符串对应数字有大小限制。
函数实现:
#include#include #include #include int my_atoi(const char* str) { assert(str != NULL); int flag = 1; int ret = 0; //跳过空白字符 while (isspace(*str)) { str++; } if (*str == ' ') { return 0; } //跳过正负号 if (*str == '+') { str++; } else if (*str == '-') { flag = -1; str++; } //开始转换数字字符直到非数字字符 while (isdigit(*str)) { ret = ret * 10 + flag * (*str - '0'); if ((ret > INT_MAX) || (ret < INT_MIN)) { return 0; } str++; } //正常停止 if (*str == ' ') { return ret; } else { //遇到非数字字符 return ret; } }



