本文主要是介绍模拟itoa和atoi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
模拟实现atoi
函数原型:
int atoi ( const char * str );
传入一个char*,返回值为int
int my_atoi(const char* str)
{assert(str);int num = 0;int flag = 1;//跳过空白字符while (*str == ' ' || *str == '\t' || *str == '\n')str++;//判断转换后数字的正负flag = (*str == '-') ? -1 : 1;//如果有输入符号,则要将此符号跳过if (*str == '-' || *str == '+')str++;//每一位数字转为数字while (*str >= '0' && *str <= '9'){num = num * 10 + (*str - '0');str++;}return num*flag;
}
模拟实现itoa
函数原型:
char* itoa(int value,char* str,int radix)
int转为char*。
value为int的值。
str为最后字符串保存的地方。
radix为转为X进制的字符。
char* my_itoa(int value,char* str,int radix)
{char* firstdig;char* p = str;unsigned int digval;if (value < 0){*p++ = '-';value = -value;}firstdig = p;//这时存到p中(也就是str)的数字为反的do {//数字一定是无符号整型,并且数字为对进制位取得余数。digval = value%radix;value /= radix;if (digval > 9)*p = (char)(digval - 10 + 'a');else*p = (char)(digval + '0');p++;} while (value>0);//这里需要翻转一下//先把末尾置为\0结束符*p-- = '\0';while (firstdig < p){char temp = *p;*p = *firstdig;*firstdig = temp;firstdig++;p--;}return str;
}
这篇关于模拟itoa和atoi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!