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及其地址值在相关函数中传递的情况。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

担当大任者的九大特征

一、忍得住孤独人生想要获得成功,必须忍得住孤独,尤其是在创业之初,很多时候为了达成目标,可能别人在休息时,我们还一个人在默默无闻的付出,这种过程是非常孤独的,但如果能挺得过去,…

c语言竖等于意思,C语言竖式问题

#include#includeint main(){char str[30];//键盘输入数组scanf("%s",str);int i,j;char sta[50];//字符串输入输出数组int count0;for(i1000;i<9999;i){for(j10;i<99;i){int proi*j;int pro1i*(j%10);int pro2i*(j/10);sprintf(sta,"%d%d%d%d%d",i,…

6章 Models

传统的MVC结构中&#xff0c;有模型这么一个概念。Django中&#xff0c;Models又是怎么一回事呢? 刚才生成的这些乱七八糟的数据迁移就是Django自带的一些应用 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessio…

android activity之间传递对象,Android Activity之间的数据传递

一、通过startActivity来进行Activity的传值在Android中&#xff0c;如果我们要通过一个Activity来启动另一个Activity&#xff0c;可以使用 startActivity(Intent intent)方法来传入一个Intent对象&#xff0c;这个Intent对象我们可以精确的指定我们需要跳转的Activity上&…

I/O流

1.I/O流1.1 基本概念 I/O就是Input/Output的简写&#xff0c;也就是输入/输出的含义。 I/O流主要指像流水一样源源不断进行读写的状态/过程。 1.2 基本分类 以数据读写的单位不同分为&#xff1a;字节流 和 字符流。 其中字节流主要指以字节为基本单位进行读写的流&#xff0c;…

android蓝牙传输的是字符吗,Android蓝牙接收到的串行数据乱码

我已经通过以下线索了解我的疑问。但是&#xff0c;目前还不清楚。Android蓝牙接收到的串行数据乱码克里斯&#xff0c;这是一个不错的解决方法&#xff0c;你建议。在你提供的解决方案中&#xff0c;附加\ n的解决方案适合我&#xff0c;因为我纯粹将我的PC(MATLAB)中的浮点值…

请谈谈cookie,locaStorage的区别和特点

cookie和locaStorage有什么区别呢&#xff1f; 存储容量&#xff1a; Cookie存储的数据大小有限制&#xff0c;一般在4KB左右&#xff0c; LocaStorage可以存储更大的数据&#xff0c;一般在5MB甚至更多 存储位置&#xff1a; Cookie数据会随着每次HTTP请求自动发送到服务器端…

[UE4]更新UI的三种方式

一、函数绑定 二、属性绑定 只会列出匹配的数据类型。 三、事件驱动更新 啦啦啦啦啦 结论&#xff1a;函数和属性绑定的原理都是每帧都去调用绑定的函数/属性&#xff0c;效率比较低下&#xff0c;一般不推荐使用。事件驱动更新的效率最好&#xff0c;性能最好。 在正式的产品开…

使用handler倒计时

点击button暂停 public class MainActivity extends AppCompatActivity {BindView(R.id.button)Button button;BindView(R.id.first_textview)TextView textView;Handler mHandler;volatile boolean flagtrue;Object objectnew Object();MThread mThread;Overrideprotected voi…

android 编译主机,Android】源码编译 ---zzz

问题解决 参考1)/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: 权限不够解决&#xff1a;chmod ax prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc2)/bin/bash: build/core/find-jdk-tools-jar.sh: 权限不够/bin/bash: build/too…

C/C++ 面试题记录

1、new 、 delete 、 malloc 、 free 的区别与关系&#xff1f; new / delete 是C的运算符&#xff0c;malloc / free 是C的标准库函数。 new会调用对象的构造函数&#xff0c;delete会调用对象的析构函数。它们都可用于动态申请内存和释放内存。 对于非内部数据类型的对象而言…

android实现3种定位的切换,Android 滑动定位+吸附悬停效果实现

在前两篇文章中&#xff0c;分别介绍了tablayoutscrollview 和 tablayoutrecyclerview 实现的滑动定位的功能&#xff0c;文章链接&#xff1a;Android 实现锚点定位Android tabLayoutrecyclerView实现锚点定位仔细看的话&#xff0c;这种滑动定位的功能&#xff0c;还可以整体…

用JavaScript语言判断一个三位数是否为水仙花数

// 提示用户输入一个三位数// 如果不是三位数或者不是数字&#xff0c;则提示“非法输入”&#xff1b;// 如果输入合法&#xff0c;判断这个三位数是否为水仙花数。// &#xff08;每一位数的三次方之和等于这个数本身&#xff0c;就是水仙花数。例如&#xff1a;153 370 371 …

unity mmd不支持android,MMD模型导入Unity的解决方案

前言学了Unity后&#xff0c;总是感觉缺少资源&#xff0c;包括人物、物品模型、动作数据、贴图、特效&#xff0c;各种插件&#xff0c;还被骗去学了几天各种美术软件。说起模型和动作数据&#xff0c;就又想到MMD&#xff0c;毕竟有那么现成的资源&#xff0c;虽然不能商用&a…

关于windows cmd的一些便捷应用

在同事的指点下&#xff0c;我学会了一种非常方便的进入路径的方法 在windows文件夹中直接打开到要执行的文件的位置&#xff0c;然后在我的电脑那个路径当中输入cmd 之后&#xff0c;cmd的对话框会弹出来&#xff0c;并且显示在当前路径下&#xff0c;这样&#xff0c;有一些需…

android中的 listview,Android中ListView的初步认识(一)

ListView是安卓开发中常用的组件之一&#xff0c;它的作用是在一个垂直的列表中展现出所需的项目。接下来&#xff0c;我们看一下ListView的实现方法&#xff1a;第一种 是常见的在XML中定义然后在activity中使用findViewById来获取的方式(这个相当基础了&#xff0c;直接代码)…

Tcl 语言改写Java题目-1

Java题目:https://blog.csdn.net/wenzhi20102321/article/details/52274976 Program1. proc fun_1 {x} { if {$x<3} { return 1 } else { return [expr [fun_1 [expr $x - 1]] [fun_1 [expr $x - 2]]] }}puts [fun_1 10] program 2 #判断是不是素数…

android开发app初始化,安卓快速开发框架(一)XBaseAndroid初始化使用

XBaseAndroid如果您需要使用最新版可以去github查看。该文章描述的是1.0.9.4版本。使用AndroidStudio 3.0创建一个新的安卓项目如果您不知道如何创建&#xff0c;请猛戳此处。配置仓库引用项目结构.png点击build.gradle(Project)&#xff0c;添加以下maven仓库。allprojects {r…

Python之模块与包(下)

1、什么是包 #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module names” 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 #具体的&#xff1a;包就是一个包含有__init__.py文件的文件夹&#xff0c;所以其实我…

html 状态 304,网站频繁出现304状态码的原因

原标题&#xff1a;网站频繁出现304状态码的原因很多SEOER经常说网站日志反回值304是怎么回事&#xff1f;经常会碰到站长们抱怨蜘蛛抓取返回码老是304状态&#xff0c;且抓取的次数越来越少的问题。搜索引擎为了自身的用户体验&#xff0c;会想尽办法来提高检索调用率、准确性…