c语言函数返还一个字符 c语言函数返还一个字符怎么操作

c语言函数返回字符串在time1()函数里,char now[]是个在函数里声明的临时变量
函数返回 char * p之后 ,char now[]的空间就已经释放掉了
如果你想返回时间字符串
把char now[80]; 改成 char *now =(char *)malloc(sizeof(char)*80);
用malloc函数申请空间,函数返回之后空间就不会被释放掉了
VC++ 6.0编译通过
C语言中如何让自定义函数返回一个字符串的地址?char * fun(){
char s[100];
//...代码
//return s;//原来你自己写的返回语句,改为下面的语句
char* str = malloc(strlen(s)+1);
strcpy(str, s);
return str;
}
在函数内部定义的任何变量,当函数返回后都会被系统收回内存 , 指针也会被收回,但是指针指向的地方就不一定了,就好比你的电话本上的记录被删除了,但是电话对应的那个人和手机还在 。同样的道理,想要返回字符串,只能把内容放在安全的地方,也就是动态内存 , 然后把该内存对应的地址返回就可以 , 就好比你把一个人的电话号码告诉另一个人,然后把你手机上的删除,另一个人也不受影响 。
c用malloc或者calloc,c++用new,意思就是申请一块完全由程序员管理的内存,不再使用时也需要程序员指明回收,malloc和calloc出来的用free,new出来的用delete 。如果使用不当 , 比如内存没有回收,就会造成内存泄露,如果回收了还继续用,就会造成非法访问 。所以使用时要细心 。
在C语言中,返回一个字符串的函数应该怎样定义要返回字符串 需要返回char*类型
需要注意的是 返回的字符串 不能是该函数的局部变量 , 否则会导致出错
可以是参数字符串,全局变量,静态局部变量,或者动态分配的内存
比如
char *my_str_cpy(char *d, char *s)
{
char *p=d;
while(*p++=*s++);
return d;//返回参数字符串 。
}
C语言里怎么接收一个返回的字符串 先谢谢........char *fun(char *a, int len, char c)//函数功能返回字符串a中第一个以字符c开头c语言函数返还一个字符的字串
{
int i;
char *p=a;
for(i=0;ilen;i++)
{
if(*p==c)
{
break;
}
p++;
}
if(i==len)
{
printf("没有匹配!\n");
return null;
}
else
{
return p;
}
}
int main()
{
char s[10]="abcdefghi";
char in;
char *p;
printf("输入c语言函数返还一个字符你要匹配c语言函数返还一个字符的字符:");
scanf("%c", in);
p=fun(s, 10, in);
printf("result:%s"c语言函数返还一个字符,p);
return 0;
}
C语言中函数如何返回字符串?别听 楼上 的 瞎说,也 别 百度 了,都是 错 的,我 告诉 你 正确 答案
函数 中 的 字符 串 在 函数 结束 的 时候 会 自动 被 释放 掉,所以 即使 返回 char* 指向 的
也 就是 原 函数 字符串 的 地址,访问 的 是 一个 系统 没有 分配 给 程序 的 内存 ,  虽然 编译器 不会 报错,但 语法 绝对 是 错误 的,而且 你 不一定 能 得到 一个 正确 的 结果
三种 解决 方法:
1 ,  struct ret { char a[100];}; 返回 一个 结构, 结构里面 包含 字符串
2, char* ret = (char *)malloc(100 * sizeof (char));在 函数 里 开 一个 动态 的 字符串,这个 可以 返回, 不过 动态 内存 需要 手动 free 掉
3,这个 不是 c语言 了, 调用 c++ 里面 的 string 类型,也是 最简单 的 办法 ,  省心,安全
我如何从函数返回一个字符数组C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组 。在C语言中,数组大多数时候是可以用指针替代的 。

推荐阅读