表头文件是#include <stdlib.h>
定义函数为int atoi( const char *array)
函数说明该函数会扫描字符串array,并且前面的空格字符,直到遇到正负号或者数字才开始转换。
而再遇到非数字或者字符串结束('\0')时,才结束转换,并将结果返回。
#include "stdio.h"
#include <assert.h>
#define MAX_INT 0x7FFFFFFF
#define MIN_INT 0x80000000
int atoi(const char* array)
{
int sign = 1;//默认为正的
int digit = 0;
int result=0;//保存结果
int max_test = MAX_INT/10;
int max_digit = MAX_INT%10;
assert(array);
while(*array == ' '||*array == '\t')
array++;
if(*array=='-')
{ sign = -1;
array++;
}
while(*array>='0'&& *array<='9')
{
digit = *array-'0';
if(result > max_test||(result== max_test && digit > max_digit))
{
return (sign>0) ? MAX_INT : MIN_INT;
}
result= result*10+digit;
}
return result*sign;
}
void main()
{
char *a = "-2147483649";
int m;
m = atoi(a);
printf("%d\n",m);
}