在一个qq群遇到这样一个题目,首先int转字符串是比较常见的题目,书写起来并不难,但是有些临界条件容易出错
而这个题目增加了几个限制条件,
1. 参数、返回值无法修改
2. 无法使用库函数,那我们当然无法使用itoa这样的库函数了
3. 调用方不考虑内存释放,那意味着我们不能在堆区申请内存,上一条件与此有些契合,故此malloc这样的函数无法使用
#define BUFFER_LEN 12
const char *
ToString(int iVal)
{
int i = BUFFER_LEN - 1, flag = 1, val = iVal;
static char str[BUFFER_LEN];
str[i--] = '\0';
if (val == 0) {
str[i] = '0';
return str + i;
}
if (val < 0)
flag = -1;
while (val) {
str[i--] = val % 10 * flag + '0';
val /= 10;
}
if (flag < 0)
str[i] = '-';
else
++i;
return str + i;
}