函数返回值是指针

char*fgets(char*s,intn,FILE*stream);这个函数执行成功时,会返回一个指向字符串s的指针。我如何获得这个指针。比如用一个**二级指针变量来... char *fgets(char *s,int n,FILE *stream);
这个函数执行成功时,会返回一个指向字符串s的指针。
我如何获得这个指针。比如用一个**二级指针变量来存放。可我不知道怎么做。
FILE *out,*in;
char *c;
in = fopen("file.in","r");
out = fopen("file.out","w");
(这个是用来存放它返回的那个指针的变量) = fgets(c,1024,in);
fputs(用那个变量,out);
我知道还可以用其他的办法。 比如 fputs((fgets(c,1024,in)),out);
除了fputs((fgets(c,1024,in)),out); 还有其他的办法么。
我目前就想不通如何用一个变量来存放一个指针。
当然这个变量可以也是指针。我不知道能不能。难道函数返回一个指针。我们只能通过函数去执行它的返回的指针么?
展开
 我来答
庄政警
2020-03-20 · TA获得超过9916个赞
知道大有可为答主
回答量:1113
采纳率:94%
帮助的人:882万
展开全部

f函数调用完b被回收的含义是:通知系统,b所占用的内存空间现在是自由的了,其他程序可以使用这块内存了,在被其他程序占用修改前,它还是以前的值。但什么时候会改变,谁也不知道,可能很久才会被其他程序占用,也可能立即会被修改,所以,不要返回一个局部变量的地址。

就你这个代码测试一下:


第二次输出就变了

析凌春Td
2011-01-14 · TA获得超过176个赞
知道答主
回答量:66
采纳率:0%
帮助的人:63.7万
展开全部
定义一个函数指针就行啦,
char(*p)(char *s,int ,FILE *stream)=char *fgets(char *s,int n,FILE *stream);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hqhvd52
2011-01-15 · TA获得超过389个赞
知道答主
回答量:368
采纳率:0%
帮助的人:87.4万
展开全部
#include "stdio.h"
#include "string.h" //这里记得要引用这个库,这是strcpy的头文件
char* GetFileName()
{
char filename[20] = "file_0001.dat"; //这块不能用filename[],
//没有这种类型,那种形式只能做为函数参数来使用,不能用在变量声明
//这里声明的filename是一个局部变量,退出函数时将被编译器收回分配的空间
strcpy(filename,"file_xxxx");
return filename; //由于filename是一个局部变量,退出函数时将被编译器收回分配的空间
} //所以返回的时候将失败
void main()
{
char* s;
s = GetFileName();
printf("%s\n", s);
}
如果想返回一个有效的地址,那么就用malloc吧

#include "stdio.h"
#include "string.h" //这里记得要引用这个库,这是strcpy的头文件
#include "stdlib.h"
char* GetFileName()
{
char *filename = (char*)malloc(20); //这里用的是malloc动态分配的地址.这样退出函数时将不会收走指针

strcpy(filename,"file_xxxx");
return filename;//这时filename是动态分配的地址,所以退出函数时不会被收回空间
}
void main()
{
char* s;
s = GetFileName();
printf("%s\n", s);
free(s);//用完指针记得收回
}

上面的两个实例我都有注释.希望你能明白.
如果还有什么不明白加我百度HI吧.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式