printf打印指针所指的内容,出错,

d1690154317p 2017-02-25 07:26:59
#include <stdio.h>
#include <stdlib.h>
char* tochar(int num)
{
char str[10] = {0};
int val;
int wei=0;
int inum = num;
while(inum /= 10)
{
wei++;
}
for (;num;num /= 10,wei--)
{
str[wei] = num%10+48;
}
return str;
}

void main ()
{
int num = 12345;
char * istr = NULL;
istr = tochar(num);

while(*istr != '\0')
{
printf("%c\n",*istr);
istr++;
}
system("pause");
}

各位大神,main函数中while循环打印,打印出乱码。运行printf后,为什么指针istr的内容就变成乱码了??
...全文
834 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2017-02-27
  • 打赏
  • 举报
回复
使用生命周期结束的变量是未定义行为
赵4老师 2017-02-27
  • 打赏
  • 举报
回复
引用 3 楼 qq423399099 的回复:
使用生命周期结束的变量是未定义行为
还炫已经宣布分手的女票也是未定义行为。
d1690154317p 2017-02-25
  • 打赏
  • 举报
回复
哦哦,明白了,怪不得把str[10]变成全局变量就可以了,,,
wang0635 2017-02-25
  • 打赏
  • 举报
回复
tochar函数中的局部变量数组str[10],在该函数返回后,占有的空间已经被释放。调用printf函数时很可能把那个位置的存储单元又用了。所以里面存储的东西已经不是上次存入的了。可以把它写成 static char str[10]; 就长期保存了。或者使用 malloc 分配也可以,挪到所有函数外面也行

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧