题目说明:
1、设计函数: int atoi(const char *nptr);
2、功能:把字符串转换成整型数,atoi()会扫描参数nptr字符串,如果第一个非空格字符存在,
是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 ) 字符时停止转换,
返回整型数。否则,返回零,
3、头文件: #include <stdlib.h>
程序一:
#include <stdio.h>
#include <stdlib.h> //isspace()函数的头文件
int myAtoi(const char* s)
{
int result = 0;
int flag = 1;
int i = 0;
while(isspace(s[i]))
i++;
if(s[i] == '-') //遇到负号
{
flag = -1;
i++;
}
if(s[i] == '+') //遇到正号
i++;
while(s[i] != ' ')
{
if((s[i] > '9') || (s[i] < '0'))
break;
int j = s[i] - '0';
result = 10 * result + j;
i++;
}
result = result * flag;
return result;
}
int main()
{
char* a = " -1234def";
char* b = "+5678";
int i = myAtoi(a);
int j = myAtoi(b);
printf("%d ",i);
printf("%d ",j);
return 0;
}
程序二:
#include <cctype>
int
my_atoi(
const
char
* p){
assert
(p != NULL);
bool
neg_flag =
false
;
// 符号标记
int
res = 0;
// 结果
if
(p[0] ==
'+'
|| p[0] ==
'-'
)
neg_flag = (*p++ !=
'+'
);
while
(
isdigit
(*p)) res = res*10 + (*p++ -
'0'
);
return
neg_flag ?0 -res : res;
}