字符指针内容赋值给字符数组

内特-瑟蒙德 2017-06-05 03:09:00
从函数里返回字符指针能打印内容,但是把指针的内容赋值给字符数组后,数组的内容就是乱码了
strcpy,strncpy,memcpy都试过了
...全文
556 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-06-06
  • 打赏
  • 举报
回复
在局部变量前面加static
paschen 2017-06-06
  • 打赏
  • 举报
回复
如果你的数组是函数中的局部变量,函数结束后就销毁了 你说返回的指针可以应该是你指针指向的字符串是在常量区的
C4Fun 2017-06-06
  • 打赏
  • 举报
回复
注意变量的生命周期!
csdndenglu 2017-06-06
  • 打赏
  • 举报
回复
是不是指针变量是局部变量?生命周期到了,你还在使用?如果是这样换成全局变量试试,或者new申请一下内存试试看
驱动矢量 2017-06-06
  • 打赏
  • 举报
回复
从函数里返回字符指针能打印内容,但是把指针的内容赋值给字符数组后,数组的内容就是乱码了 strcpy,strncpy,memcpy都试过了 楼主,我猜测你的代码 “从函数里返回字符指针能打印内容”-》printf (函数的返回值)。返回的字符指针是在函数内定义的,属于栈变量,在函数返回后,字符指针指向的空间会被释放。指针的指向的空间内容可能正常,也可能被其他数据覆盖。 建议:想调用函数得到某个字符串值,一般传入一个字符指针变量作为出参。调用函数后可以以该指针变量作为返回值,或者直接使用该变量进行下一步操作。
wang0635 2017-06-06
  • 打赏
  • 举报
回复
引用 3 楼 cfjtaishan 的回复:
返回的指针指向的数据是在函数栈上的,函数执行结束后栈被自动释放了,即指针指向的区域数据已经不可用了
很可能是这个原因。刚刚返回时,栈上的东西还没有被完全覆盖;再调用其他函数,栈上基本上没什么原先的痕迹了
自信男孩 2017-06-05
  • 打赏
  • 举报
回复
要根据你的代码才能更好的帮你解决问题。只是从你的描述去分析问题,可能性就会比较多。比如,返回的指针指向的数据是在函数栈上的,函数执行结束后栈被自动释放了,即指针指向的区域数据已经不可用了。还有可能是拷贝字符串时,没有加字符串的结束标记'\0'等等。 要能够正确分析的问题,还需要你贴出对应的code.
  • 打赏
  • 举报
回复
上码 ~
真相重于对错 2017-06-05
  • 打赏
  • 举报
回复
你的代码???? 或者 程序的编码问题?

69,382

社区成员

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

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