c语言fclose什么作用,fclose()的源码是什么?那位高人能指点一下?解决思路
当前位置:我的异常网» C语言 » fclose()的源码是什么?那位高人能指点一下?解决思路
fclose()的源码是什么?那位高人能指点一下?解决思路
www.myexceptions.net 网友分享于:2013-04-03 浏览:30次
fclose()的源码是什么?那位高人能指点一下?
现在发现一个错误,可能是由于打开一个文件,而关闭两次造成了,苦于不知道fclose()的内部实现,哪位能指点一下?十分感激!
------解决方案--------------------
steedhorse(晨星)说的一点没错,而且光有fclose源码也没有,要看FILE的定义及其它相关函数
以下为small C的fclose源码:
extern int Ustatus[], Udevice[], Ufd[];
fclose(fd) int fd; {
if(!Umode(fd)) return (ERR);
if(!isatty(fd)) {
if(Umsdos(0,0,Ufd[fd],CLOFIL)==ERR)
return (ERR);
}
return (Ustatus[fd]=Udevice[fd]=NULL);
}
以下是C++ BUILDER的:
int _RTLENTRY _EXPFUNC fclose (FILE *fp)
{
int rc;
if (fp == NULL || fp-> token != (unsigned char) fp)
return(EOF); /* invalid pointer */
_lock_stream(fp);
if (fp-> bsize)
{
if (fp-> level < 0 && fflush (fp))
RETURN(EOF);
if (fp-> flags & _F_BUF)
free (fp-> buffer);
}
rc = __close (fp-> fd);
fp-> flags = 0;
fp-> bsize = 0;
fp-> level = 0;
fp-> fd = -1;
if (fp-> istemp != 0)
{
_unlink(__mkname((char *)NULL, (char *)NULL, fp-> istemp));
fp-> istemp = 0;
}
exit:
_unlock_stream(fp);
return rc;
}
------解决方案--------------------
#ifdef _MT
int __cdecl fclose (
FILE *stream
)
{
int result = EOF;
_ASSERTE(stream != NULL);
/* If stream is a string, simply clear flag and return EOF */
if (stream-> _flag & _IOSTRG)
stream-> _flag = 0; /* IS THIS REALLY NEEDED ??? */
/* Stream is a real file. */
else {
_lock_str(stream);
result = _fclose_lk(stream);
_unlock_str(stream);
}
return(result);
}
int __cdecl _fclose_lk (
FILE *str
)
{
REG1 FILE *stream;
REG2 int result = EOF;
/* Init near stream pointer */
stream = str;
#else /* _MT */
int __cdecl fclose (
FILE *str
)
{
REG1 FILE *stream;
REG2 int result = EOF;
/* Init near stream pointer */
stream = str;
if (stream-> _flag & _IOSTRG) {
stream-> _flag = 0;
return(EOF);
}
#endif /* _MT */
_ASSERTE(str != NULL);
if (inuse(stream)) {
/* Stream is in use:
(1) flush stream
(2) free the buffer
文章评论
c语言fclose什么作用,fclose()的源码是什么?那位高人能指点一下?解决思路相关推荐
- C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码
<C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...
- java中的string函数_java中string.trim()函数的作用实例及源码
trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...
- python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...
Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码)/Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码 ...
- C语言Kruskal 算法 (MST)(附完整源码)
C语言Kruskal 算法 MST的算法 C语言Kruskal 算法 MST算法完整源码(定义,实现,main函数测试) C语言Kruskal 算法 MST算法完整源码(定义,实现,main函数测试) ...
- C语言线性插值lerp算法(附完整源码)
求二个数的最大公约数和最小公倍数 实现以下接口 C语言实现线性插值lerp算法完整源码(定义,实现,main函数测试) 实现以下接口 float lerp(float k0, float k1, fl ...
- java中trim_java中string.trim()函数的作用实例及源码
trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...
- c++ 游戏_C/C++编程笔记:C语言实现连连看游戏,项目源码分享
本篇文章分享看题目就知道是写给初学者的,学的比较好的小伙伴也可以将自动算法等一些知识给加进去,希望对大家有帮助! 好了,当我们所有的准备工作做好之后,我们就可以来编写我们的C语言连连看游戏了! 其实这 ...
- 易语言网易云音乐登录post源码
易语言网易云音乐登录post源码 以下是部分源码: .版本 2 .支持库 dp1 data = 文本_替换 (#常量2, , , , "账号", 账号, "密码" ...
- 最新C语言零基础入门(带课件+源码)
C语言零基础入门 带课件+源码 下载地址:百度网盘
最新文章
- 机器学习中的标量、向量、矩阵、和张量的概念
- 如何找到php的配置文件,如何查找PHP配置文件php.ini所在路径
- android oppo 权限,OPPO Reno可尝鲜Android Q:教程如下
- 动软发布微信营销服务系统,微信商城系统!
- 1.16 Java的异常跟踪栈
- 【机器学习算法专题(蓄力计划)】十八、机器学习中SVM算法中的硬间隔和软间隔
- leetcode842. 将数组拆分成斐波那契序列(回溯)
- java 自定义注解+AOP实现日志记录
- UI设计灵感|迷人的概念加载动画设计
- PYTORCH BN层
- linux查看进程加载了哪些dll,linux下动态链接库的加载及解析过程
- uni-app关于tabBar配置
- SPECCPU2006 Spec2006 使用说明
- Objective-C小白入门:什么是Objective-C
- python怎样查找收盘价_如何在Python中从晨星获得调整后的收盘价?
- 使用smbd实现windows和liunx的共享交互
- java通信—网络聊天室网络画板(简陋版)
- java查看端口号被占用的命令_linux下怎么查看哪些端口被占用
- vue 路由history模式打包部署 The requested URL * was not found on this server. 的解决方法
- 一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作
热门文章
- 牛宝宝取名起名字:寓意前程似锦、仪表不凡的男孩名字
- java内存模型——JMM理解
- 服务器中病毒要不要重装系统,五种情况必须要给电脑重装系统,这三种不用重做系统,别被骗了...
- windows无法访问指定设备路径或文件怎么回事(系统找不到指定路径解决方法)
- codeup《算法笔记》题目索引(题目+答案+思路)
- shell中的while
- 你应该知道的 纳什均衡,并且用 python 实现
- 【运筹优化】AFSA人工鱼群算法求解无约束多元函数最值(Java代码实现)
- 第一章项目学习活动记录表
- Android 跳转到安卓市场进行下载,跳转至应用商店下载