C语言中函数如何返回字符串?

如果用charhanshu()返回的是字符,怎么才能返回字符串呢?该用什么定义?先谢谢... 如果用char hanshu()
返回的是字符,怎么才能返回字符串呢?该用什么定义?
先谢谢
展开
 我来答
vrg000
推荐于2017-11-26
知道答主
回答量:18
采纳率:0%
帮助的人:1.3万
展开全部
别听 楼上 的 瞎说, 也 别 百度 了, 都是 错 的, 我 告诉 你 正确 答案

函数 中 的 字符 串 在 函数 结束 的 时候 会 自动 被 释放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函数 字符串 的 地址, 访问 的 是 一个 系统 没有 分配 给 程序 的 内存, 虽然 编译器 不会 报错, 但 语法 绝对 是 错误 的,而且 你 不一定 能 得到 一个 正确 的 结果
三种 解决 方法:
1, struct ret { char a[100]; }; 返回 一个 结构, 结构里面 包含 字符串
2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函数 里 开 一个 动态 的 字符串, 这个 可以 返回, 不过 动态 内存 需要 手动 free 掉
3, 这个 不是 c语言 了, 调用 c++ 里面 的 string 类型, 也是 最简单 的 办法, 省心, 安全
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣诞鲨鱼
2011-09-14 · TA获得超过480个赞
知道小有建树答主
回答量:525
采纳率:0%
帮助的人:481万
展开全部
在time1()函数里,char now[]是个在函数里声明的临时变量
函数返回 char * p之后 ,char now[]的空间就已经释放掉了
如果你想返回时间字符串
把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);
用malloc函数申请空间,函数返回之后空间就不会被释放掉了
VC++ 6.0编译通过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2011-09-14 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6443万
展开全部
char now[80];
char *p=NULL;

p=now;
printf("%s",p);
return p;

这些操作都是子函数中的数据(变量),在子函数结束后,p,now都会被释放,你的输出都是不准确的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-13
展开全部
用char*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式