函数返回值是指针
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); 还有其他的办法么。
我目前就想不通如何用一个变量来存放一个指针。
当然这个变量可以也是指针。我不知道能不能。难道函数返回一个指针。我们只能通过函数去执行它的返回的指针么? 展开
这个函数执行成功时,会返回一个指向字符串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); 还有其他的办法么。
我目前就想不通如何用一个变量来存放一个指针。
当然这个变量可以也是指针。我不知道能不能。难道函数返回一个指针。我们只能通过函数去执行它的返回的指针么? 展开
3个回答
展开全部
定义一个函数指针就行啦,
char(*p)(char *s,int ,FILE *stream)=char *fgets(char *s,int n,FILE *stream);
char(*p)(char *s,int ,FILE *stream)=char *fgets(char *s,int n,FILE *stream);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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吧.
#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吧.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询