c语言在函数中传递指针,[求助]关于文件指针在函数中传递的问题

[求助]关于文件指针在函数中传递的问题

我写的一个程序中文件指针在各函数间传递。请各位整理一下思路。

/*===============================================================*/

/* 。。。(开头部分省略) */

/* 部分函数省略 */

/* 打开号码文件,号码文件必须与该程序放在同一文件夹。*/

void OpenFile(char * argv , FILE ** fin , FILE ** fout )

{

char fname[20];

strcpy(fname,"testout.out");

*fin=(FILE *)malloc(sizeof(FILE));

*fout=(FILE *)malloc(sizeof(FILE));

if(((*fin)=(FILE *)fopen("r+",argv))==NULL)

{

printf("%s","\n Open Input File Failed !\n");

exit(0);

}

else

{

if(((*fout)=(FILE *)fopen("w+",fname))==NULL)

{ printf("%s","\n Open Output File Failed !\n");

exit(0);

}

}

return;

}

/*----------------------------------------------------------------------------------------------*/

/* 打开号码文件,号码文件必须与该程序放在同一文件夹。结果文件以接收的字符串为文件名,后缀名为.out */

void OpenFile2(char * argv1 , FILE ** fin ,char * argv2 , FILE ** fout )

{

*fin=(FILE *)malloc(sizeof(FILE));

*fout=(FILE *)malloc(sizeof(FILE));

if(((*fin)=(FILE *)fopen("r+",argv1))==NULL)

{

printf("%s","\n Open Input File Failed !\n");

exit(0);

}

else

{

if(((*fout)=(FILE *)fopen("w+",argv2))==NULL)

{ printf("%s","\n Open Output File Failed !\n");

exit(0);

}

}

return;

}

/*--------------------------------------------------------------------------*/

/* 主函数 */

int main(int argc,char * argv[])

{

FILE * fin, * fout;

char * str_old,* str_new;

fin=NULL;

fout=NULL;

str_old=(char *)calloc(sizeof(char),CODE_LEN); /* CODE_LEN为自定义的常量 */

str_new=(char *)calloc(sizeof(char),CODE_LEN);

/* 打开文件 */

switch(argc)

{

case 2 : {OpenFile(argv[1], &fin , &fout); break; }

case 3 : {OpenFile2(argv[1], &fin, argv[2], &fout);break;}

case 1 : {printf("%s","\n Input File is Missing !\n");

PrintTip(); /* 显示提示函数,省略*/

exit(0);

}

default : {printf("%s","\n You Input too many arguments !\n");

PrintTip();

exit(0);

}

}

/* 读入数据并处理,写出 */

while(!feof(fin))

{

ReadAString(&fin,str_old); /* 从*fin 中读入一个字符串传回str_old变量中 */

strcpy(str_new,str_old);

str_new=AddCode(str_new,ConvertChar(CalcMod(ConvertValue(str_new)))); /* 全是自定义的函数,最后返回一个字串 */

WriteFile(&fout,str_old,str_new); /* 将新旧字串都写入*fout文件中,使用自定义函数 */

}

/* 关闭文件 */

CloseFile(&fin,&fout);

free(str_old);

free(str_new);

return (0);

}

/*=======================================================================*/

希望大家帮忙分析一下fin、fout及其地址值在相关函数中传递的情况。

我在编译时总是打开输入文件错误,应该是地址传递时出的错,可是在逻辑上我找不出哪错了。希望大家帮我看看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值