分类：电脑/网络-程序设计-C/C++
问题：简单的C语言如程序，想要把文件指针写如函数里。main函数是当输 
如，想要把文件指针写如函数里。main函数是当输入“2”时运行函数fun，也就是仅仅的想输入东西。请问，函数（也就是这个以文件指针作为的函数） 外面的返回值是什么类型，里面形参类型是什么。并且如果把函数改为读取文件内容“read”时，返回类型和形参类型是什么？住函数是否要加变量。最好详细点，谢谢。#include <stdio.h>void fun(){    FILE *f;  char ch='a';  if ((f=fopen("c:\\aa.dat","w"))==NULL)  {    prin如，想要把文件指针写如函数里。main函数是当输入“2”时运行函数fun，也就是仅仅的想输入东西。请问，函数（也就是这个以文件指针作为的函数） 外面的返回值是什么类型，里面形参类型是什么。并且如果把函数改为读取文件内容“read”时，返回类型和形参类型是什么？住函数是否要加变量。最好详细点，谢谢。#include <stdio.h>void fun(){    FILE *f;  char ch='a';  if ((f=fopen("c:\\aa.dat","w"))==NULL)  {    printf("File Can't be find!\n");  }  else  {    while (ch!='\n')    {      ch=getchar();      fputc(ch,f);    }  }  fclose(f);}void main(){  int a=0;  printf("请输入：\n");  scanf("%d",&a);  switch(a)  {    case 1:printf("OK\n"); break;    case 2: fun(); break;  }}
回答：回答LZ的问题：以该程序为例,函数fun 的返回类型说明符为 void,表示它的返回为“空类型”，也就是无返回值的意思。而且该函数也没有形参,因为fun(),括号里为空,没有参数。文件的打开方式与函数的形参或实参没有直接关系。 实参是实际调用时的参数，形参是接受实参值的形式参数，是根据函数设计的需求来定的。在本例中，如果将文件打开方式改为"r"读文件，那么需要修改该函数体，将文件内容显示出来，而不能使用fputc这样的写文件函数了。下面的注释，仅供参考：#include <stdio.h>  //包含头文件void fun()  //函数头,void 表示无返回值 没有形参{ FILE *f;    //定义文件指针char ch='a';  //定义char型变量ch,初始值为'a'if ((f=fopen("c:\\aa.dat","w"))==NULL)  //用fopen函数打开C根目录下的aa.dat文件,以"w"写方式,并且让f文件指针指向该文件,如果fopen函数返回值等于NULL,则提示并结束程序.{ printf("File Can't be find!\n");  //提示文件打开失败} else //文件打开成功{ while (ch!='\n')  //while循环,循环终止条件是当ch变量等于'\n'时{ ch=getchar();   //得到输入的字符fputc(ch,f);    //将字符写入f指针所指向的文件} } fclose(f);      //结束循环,关闭文件} void main()     //主函数{ int a=0;               //定义int型变量a,初始化为0值printf("请输入：\n");  //提示输入信息scanf("%d",&a);        //从键盘输入,赋值给a变量switch(a)              //多路分支判断{ case 1:printf("OK\n"); break;   //如果输入1,打印OK后退出case 2: fun(); break;           //如果输入2,调用fun函数后退出} }PS：在键盘输入2，程序调用fun函数，是由switch多路判断语句来控制实现的。至于 fun 函数的返回值和形参类型写什么，与是否调用函数fun没有关系。至于函数要不要返回值，看实际问题的需要了，如果需要在主调函数中处理或显示函数处理的结果，那么就需要设置恰当的返回值类型。至于形参，则要看设计函数的实际需求。建议LZ，参阅相关资料关于 switch 语句的使用方法，及有函数返回值及形参的具体例子。现在的程序代码，在运行时，输入2,就已经调用fun函数了，没有问题。只是代码控制逻辑上有点问题。输入2之后不能回车，否则就退出了。应该输入2之后，接着输入其它字符。回车结束，生成aa.dat文件！