7.4本该返回字符串的函数为什么返回垃圾信息
我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息。确保指向的内存已经正确分配了。例如, 确保你没有做下面这样的事情:
char *itoa(int n)
{
char retbuf[20]; /* 错! */
sprintf(retbuf, "%d", n);
return retbuf; /* 错!*/
}
一种解决方案是把返回缓冲区声明为
static char retbuf[20];
本方案并非完美, 尤其是有问题的函数可能会递归调用, 或者会同时使用到它的多个返回值时。参见问题7.7, 12.19 和20.1。
char *itoa(int n)
{
char retbuf[20]; /* 错! */
sprintf(retbuf, "%d", n);
return retbuf; /* 错!*/
}
一种解决方案是把返回缓冲区声明为
static char retbuf[20];
本方案并非完美, 尤其是有问题的函数可能会递归调用, 或者会同时使用到它的多个返回值时。参见问题7.7, 12.19 和20.1。