文章目录
前言
本篇文章介绍c语言中库函数atoi()的使用,以及模拟实现库函数。
一、atoi()库函数的介绍及使用
1.1 atoi()库函数介绍
以下是cplusplus网站关于atoi()库函数的介绍。atoi()库函数
说明:
-
首先,这个函数会将字符串前面的空格一一跳过,直到遇到非空格字符;这个非空字符分为以下情况
- 如果非空字符为字母,则返回结果为0
比如"abc123",转换得到0 - 如果非空字符为’-',则会转换得到一个负整数且这个负整数没有超过int表示的范围,正常返回这个数;如果这个数超过了int型数据的表示范围,则返回-2147483648
例如,
“-12345”,转换得到整型数值-12345
"-123456789123456"转换得到-2147483648 - 如果非空字符为‘+’或者为数字字符,则会转换得到一个正整数且这个正整数没有超过int表示的范围,正常返回这个数;如果这个数超过了int型数据的表示范围,则返回2147483647
例如,
"+12345"转换得到整型数值12345
"123456"转换得到整型数值12345
"123456789123456"转换得到2147483647
- 如果非空字符为字母,则返回结果为0
-
如果str指向的是一个空字符串或者只包含空格,则返回值为0.
-
如果两个数字字符之间存在其他非数字字符,则转换非数字字符之前的数字字符。
“123ab112”,只会转换得到整型数值123
1.2 atoi()库函数使用
-
负数转换
-
负数溢出转换
-
正数转换
-
正数溢出转换
-
包含非数字字符
(1)数字字符后面包含其他字符
(2)数字前面包含非数字字符
- 只包含非数字字符
二、atoi()库函数的模拟实现
2.1 函数设计
函数名:StrToInt
函数返回值类型: int
函数参数类型: const char* str
int StrToInt(const char* str);
2.2 函数实现思路
- 函数指针的非空判断
//指针的非空判断 利用断言
assert(str);
- 空字符串的判断
//如果第一个字符为'\0',则表示字符串为空串
if('\0' == *str)
{
return 0;
}
- 跳过字符串前面的空格字符
//利用库函数提供isspace()函数判断
while(isspace(*str)) str++;
- 正数和负数的判断
int flag = 1; //默认为正数
switch