题目
实现Myatoi函数,将字符串转成数字
例如:“123” -> 123 “12a3” ->12 遇到一个非数字字符转换结束
解题思路
1.先处理空格部分 遇到空格 ++字符串来跳过空格
2.处理符号的问题 若是字符"-"则令保存符号的flag为-1
3.处理数字字符部分 利用isdigit()函数判断字符中是否含有0-9的数字
转换:要想得到数字1要将 字符’1’(ASCII码为49)-字符’0’(ASCII码为48)得到
代码部分:
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<ctype.h>
int Myatoi( const char* arr)
{
assert(arr != NULL);
if (arr == NULL)
{
return 0;
}
int tmp = 0;//保存数值
int flag = 1;//保存正负号
while (*arr == ' ')
{
arr++;
}
if (*arr == '-')
{
flag = -1;
arr++;
}
else if (*arr == '+')
{
flag = 1;
arr++;
}
//处理数字字符
while(isdigit(*arr)) //此处包含ctype.h的头文件
{
tmp = tmp*10+(*arr - '0');
arr++;
}
return flag * tmp;
}
int main()
{
const char *p = "-123";
int ret = 0;
ret = Myatoi(p);
printf("%d\n", ret);
return 0;
}
注意事项
isdigit()函数是判断字符是不是数字。头文件ctype.h。