请实现函数int atoi(const char *nptr))
函数说明: atoi会扫描参数nptr字符串,跳过前面的空格字符,遇到数字或正负符号开始做转换,直至遇到非数字或字符串结束时('\0')结束转换,并将结果返回。
不同人能够写出不同水平的代码,是考查coding能力的经典问题。
函数实现:
int atoi(const char* nptr)
{
int result = 0;
if(nptr == NULL)
{
return result;
}
//while(nptr==" ")
while(*nptr==' ')
{
nptr++;
}
bool flag = false;
if(*nptr=='-')
{
flag = true;
nptr++;
}
else
{
if(*nptr=='+')
{
nptr++;
}
}
while(nptr != '\0')
{
int temp = *nptr - '0';
if(temp < 0 || temp > 9)
{
break;
}
else
{
result = result * 10 + temp;
}
nptr++;
}
if(flag)
{
result = 0 - result;
}
return result;
}
测试用例:
void main()
{
int num0 = atoi("+123455");
printf("num0=%d\n", num0);
int num1 = atoi("-123455");
printf("num1=%d\n", num1);
int num2 = atoi(" 123455z");
printf("num2=%d\n", num2);
int num3 = atoi("-123455.5");
printf("num3=%d\n", num3);
}