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

如果用char hanshu()
返回的是字符,怎么才能返回字符串呢?该用什么定义?
先谢谢

第1个回答  推荐于2017-11-26
别听 楼上 的 瞎说, 也 别 百度 了, 都是 错 的, 我 告诉 你 正确 答案

函数 中 的 字符 串 在 函数 结束 的 时候 会 自动 被 释放 掉, 所以 即使 返回 char* 指向 的
也 就是 原 函数 字符串 的 地址, 访问 的 是 一个 系统 没有 分配 给 程序 的 内存, 虽然 编译器 不会 报错, 但 语法 绝对 是 错误 的,而且 你 不一定 能 得到 一个 正确 的 结果
三种 解决 方法:
1, struct ret { char a[100]; }; 返回 一个 结构, 结构里面 包含 字符串
2, char* ret = (char *)malloc(100 * sizeof (char)); 在 函数 里 开 一个 动态 的 字符串, 这个 可以 返回, 不过 动态 内存 需要 手动 free 掉
3, 这个 不是 c语言 了, 调用 c++ 里面 的 string 类型, 也是 最简单 的 办法, 省心, 安全本回答被网友采纳
第2个回答  2011-09-14
在time1()函数里,char now[]是个在函数里声明的临时变量
函数返回 char * p之后 ,char now[]的空间就已经释放掉了
如果你想返回时间字符串
把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);
用malloc函数申请空间,函数返回之后空间就不会被释放掉了
VC++ 6.0编译通过
第3个回答  2011-09-14
char now[80];
char *p=NULL;

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

这些操作都是子函数中的数据(变量),在子函数结束后,p,now都会被释放,你的输出都是不准确的!
第4个回答  2014-03-13
用char*
相似回答