腾讯面试:手写一个tostring函数,该如何实现?

前几天的远程面试,让在一个网站写代码,实现一个int to string的函数,当时答得很差,现在还是想不通,到底有没有正确的写法?
const char *ToString(int iVal){
    //在这写
}
int main()
{
    printf("%s\n",ToString(123));
    return 0;
}
要求:不能改输出格式、函数参数和返回值,不能用stdio以外的函数库(也就是说malloc和new不能用)

C++里的itoa传入的参数包括要写入的字符地址,但是这题不让这么做,我就定义一个全局变量char ans[20],然后返回ans,面试官又把输出改成了:

printf("%s%s\n",ToString(123),ToString(456));
结果输出变成了123 123
问我为什么会这样?我说公用一块全局变量覆盖了,又问我为什么不是456覆盖123,我就答不出来了,然后又问我怎么改,还是答不出来……
求各位大佬解答……
全部评论
可以维护一个很长的char数组,解析完一个数字之后补上/0,有一个current指针指向他后面那个位置,如果要解析新的数字就用后面的空间,用类似池的方法去管理。
点赞 回复 分享
发布于 2018-03-29 00:03
为什么不是456覆盖123的那个。。。因为。。。因为压线顺序啊大哥!!
点赞 回复 分享
发布于 2018-03-29 08:31

相关推荐

点赞 评论 收藏
分享
牛客928043833号:在他心里你已经是他的员工了
点赞 评论 收藏
分享
评论
点赞
17
分享

创作者周榜

更多
牛客网
牛客企业服务