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。

永不止步步 发表于01-14 10:49 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308617个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号