当前位置: 代码迷 >> C语言 >> [求助]关于文件指针在函数中传递的问题
  详细解决方案

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

热度:158   发布时间:2005-12-26 22:44:00.0
[求助]关于文件指针在函数中传递的问题

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

/*===============================================================*/
/* 。。。(开头部分省略) */
/* 部分函数省略 */

/* 打开号码文件,号码文件必须与该程序放在同一文件夹。*/
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及其地址值在相关函数中传递的情况。

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

搜索更多相关的解决方案: 指针  函数  文件  

----------------解决方案--------------------------------------------------------
不是,编译的时候一个错误都没有,就连警告都没有出现。
是在运行时总出现“ Open Input File Failed !”。
----------------解决方案--------------------------------------------------------

程序运行时如果有第二个参数的话,就出现 “ You Input too many arguments !”


----------------解决方案--------------------------------------------------------

没有高手帮忙吗?


----------------解决方案--------------------------------------------------------

是不是大家都没有耐心看完贴?
还是大家对这些小问题不屑一顾?
给个回音阿。

难道我在这里发帖子就是自己发发牢骚吗?


----------------解决方案--------------------------------------------------------
  相关解决方案