2 cycsalad cycsalad 于 2017.01.08 10:26 提问

子函数打开文件如何返回指针?

如何在子函数中打开文件并将打开的指针返回来?
具体过程如下,但是返回的文件句柄是不对的,求指导!!非常感激!!

如:
void test(FILE *fp)
{
fp=fopen(temp,"wt");
}

void main ()
{
FILE *fp;

test(fp);

}

2个回答

caozhy
caozhy   Ds   Rxr 2017.01.08 10:43
已采纳
 FILE **fp;
test(fp);

void test(FILE **fp)
{
*fp=fopen(temp,"wt");
}
主程序通过 *fp接收指针

caozhy
caozhy 回复cycsalad: 嗯。如果问题得到解决,还请麻烦点下我回答右边的采纳,谢谢
一年多之前 回复
cycsalad
cycsalad 非常感谢,你这种方法需要申请内存。 我用下面的也可以,谢谢了! FILE *fp; test(&fp); void test(FILE **fp) { *fp=fopen(temp,"wt"); }
一年多之前 回复
cycsalad
cycsalad   2017.01.08 11:05

非常感谢,你这种方法需要申请内存。
我用下面的也可以,谢谢了!
FILE *fp;
test(&fp);

void test(FILE **fp)
{
*fp=fopen(temp,"wt");
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
子函数返回数组(指针和结构体)
有些时候需要子函数将一个数组返回出来,通常是两种方法,一种是靠指针,另一种是结构体。 一、先来看依靠指针怎么做 例程1: 1 #include "stdio.h" 2 3 char *test(char *tmp) 4 { 5 return tmp; 6 } 7 8 void main(void) 9 { 10 printf("%s",t
关于子函数返回指针的解决办法
#include int * fun() {    static int a[3];    //加static    a[0]=0;a[1]=1;a[2]=2;    return a; } int main() {     int *b;     b=fun();     printf("Hello world!\n");     printf("%d",b[2
指针在子函数中分配空间若干问题
如果想要在子函数中为指针分配空间,那么参数应该是指针,还是指针的引用呢?0、知识储备:指针与cout#include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std;int main() { int b=1; int *a=&b; cout<<a<<endl; cout<<&a
关于调用子函数给主函数指针分配内存
 典型的错误例子如下 在这个主函数的指针给子函数传递一个指针,而在子函数中形参有开辟了一块内存,此子函数的指针的内存里存储的地址与主函数是同一地址,即主函数的指 针和子函数形参的指针都指向同一块内存的地址,但是在子函数里,为子函数的指针申请了一块空间,并不影响主函数的指针。因为子函数的指针又指向了别的内 存。要想分配成功就得用下面两个例子。一个是在子函数的形参中第一指向指针的指针即二级指针
C/C++——子函数为什么不能返回指针
这个从函数调用是堆栈的变化说吧,函数调用的时候,系统会将函数的返回地址、参数压入系统栈中,然后跳转到函数的代码区开始执行你函数里面写的代码,这个时候,子函数才会去向系统申请堆空间存放你在这个函数中定义的变量,这些空间(变量)是有生命周期的,到这个子函数执行完毕,它的生命周期就结束了,申请的堆空间就会被释放,这个时候你指向它的指针当然是无效的;而可以返回局部变量的原因是,你子函数的返回值(子函数局部
如何写出一个返回多个值的c语言子函数
今天跟以往一样刷水题,因为水题没有刷完。我发现刷水题还是有用的,自己没有理解清楚的c的知识,等你写的代码报错后,你就能都弄懂了。结果今天这题目引发我了我的一个问题,题目如下: 5个数求最值 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述设计一个从5个整数中取最小数和最大数的程序 输入输入只有一组测试数据,为五个不大于1万的
指针在子函数中动态分配空间的问题及解决方法
问题:在对二叉树的基本操作的函数用代码实现的过程中,出现的问题,现将问题代码浓缩以使问题更突出,代码如下:   #include #include voidfun(int *t) {     t=(int *)malloc(sizeof(int));     if(!t) printf("malloc error!\n");   //若分配失败 } intmain() {  
关于子函数变量生命周期以及指针的一些问题
C语言的变量都有自己的生存周期,如果超过这个周期,那么它所占用的地址空间就会被释放掉。不再受到保护。因此主函数中要用到的变量不能再子函数里面申明。
关于主函数调用子函数涉及的指针和解引用的出现的问题
先由一个程序展开:void Swap (int a,int b)                                          { int tmp = a; a = b; b = tmp;}#include&amp;lt;stdio.h&amp;gt;int main(){ int a = 10; int b = 20; Swap(a,b); printf(&quot;%d,%d\n&quot;,a,b); re...
C/C++ 子函数返回局部变量、指针 和改变指针指向
1>子函数返回局部变量 例子1: 上面的简单程序,大家应该都知道应该会输出什么。是的,输出如下图: 引出的思考:子函数doubletimes()中的返回变量k是局部变量,返回到主函数后该变量超出了作用域,已经被销毁了,为什么主函数中的变量m还会等于20呢? 引出的结论:C语言中参数的传递(包括输入参数和返回参数)实质上都是传递的参数的拷贝。 在上面例子中,子函数返回值k=