| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1295 人关注过本帖
标题:[求助]关于文件指针在函数中传递的问题
只看楼主 加入收藏
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
 问题点数:0 回复次数:4 
[求助]关于文件指针在函数中传递的问题

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

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

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

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

搜索更多相关主题的帖子: 指针 函数 文件 
2005-12-26 22:44
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
不是,编译的时候一个错误都没有,就连警告都没有出现。
是在运行时总出现“ Open Input File Failed !”。
2005-12-26 22:46
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 

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

2005-12-26 22:48
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 

没有高手帮忙吗?

2005-12-27 19:53
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 

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

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

2005-12-28 23:05
快速回复:[求助]关于文件指针在函数中传递的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042438 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved