atoi 函数 将字符串转换成整型数,检测到非数字字符停止
//将字符串转成数字"123"->123,"12x3"->
int Myatoi(const char *str)
{
assert(str != NULL);
if(str == NULL)
return 0;
//处理前面的空格
while(*str == ' ')
str++;
//处理符号
int flg = 1;
if(*str == '-')
{
flg = -1;
str++;
}
else if(*str == '+')
{
flg = 1;
str++;
}
int tmp = 0;
while(isdigit(*str))//"123"->123: '1'->1 ? '1'-'0' == 1,'2'-'0'==2
{
tmp = tmp*10 + (*str-'0');
str++;
}
return tmp*flg;
}
//将数字转成字符串,123->"123"
void reverse(char str[])
{
int i, j;
char c;
for (i = 0, j = strlen(str) - 1; i < j; i++, j--)
{
c = str[i];
str[i] = str[j];
str[j] = c;
}
}
char *Myitoa(char *str,int n)
{
int i, sign;
if ((sign = n) < 0)
{
n = -n;
}
i = 0;
do
{
str[i++] = n % 10 + '0';
}while((n /= 10) > 0);
if( sign < 0)
{
str[i++] = '-';
}
str[i] = '\0';
reverse(str);
return str;
}
int main()
{
char str[10]="1";
int n=321;
Myitoa(str,n);
printf("转换后:%s\n",Myitoa(str,n));
return 0;
}