当前位置:我的异常网» 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()的源码是什么?那位高人能指点一下?解决思路相关推荐

  1. C语言成绩统计源代码,C语言课程设计学生成绩管理系统+源码

    <C语言课程设计学生成绩管理系统+源码>由会员分享,可在线阅读,更多相关<C语言课程设计学生成绩管理系统+源码(25页珍藏版)>请在人人文库网上搜索. 1.简易教学管理系统的设 ...

  2. java中的string函数_java中string.trim()函数的作用实例及源码

    trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...

  3. python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...

    Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码)/Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码 ...

  4. C语言Kruskal 算法 (MST)(附完整源码)

    C语言Kruskal 算法 MST的算法 C语言Kruskal 算法 MST算法完整源码(定义,实现,main函数测试) C语言Kruskal 算法 MST算法完整源码(定义,实现,main函数测试) ...

  5. C语言线性插值lerp算法(附完整源码)

    求二个数的最大公约数和最小公倍数 实现以下接口 C语言实现线性插值lerp算法完整源码(定义,实现,main函数测试) 实现以下接口 float lerp(float k0, float k1, fl ...

  6. java中trim_java中string.trim()函数的作用实例及源码

    trim()的作用:去掉字符串首尾的空格. public static void main(String arg[]){ String a=" hello world "; Str ...

  7. c++ 游戏_C/C++编程笔记:C语言实现连连看游戏,项目源码分享

    本篇文章分享看题目就知道是写给初学者的,学的比较好的小伙伴也可以将自动算法等一些知识给加进去,希望对大家有帮助! 好了,当我们所有的准备工作做好之后,我们就可以来编写我们的C语言连连看游戏了! 其实这 ...

  8. 易语言网易云音乐登录post源码

    易语言网易云音乐登录post源码 以下是部分源码: .版本 2 .支持库 dp1 data = 文本_替换 (#常量2, , , , "账号", 账号, "密码" ...

  9. 最新C语言零基础入门(带课件+源码)

    C语言零基础入门 带课件+源码 下载地址:百度网盘

最新文章

  1. 机器学习中的标量、向量、矩阵、和张量的概念
  2. 如何找到php的配置文件,如何查找PHP配置文件php.ini所在路径
  3. android oppo 权限,OPPO Reno可尝鲜Android Q:教程如下
  4. 动软发布微信营销服务系统,微信商城系统!
  5. 1.16 Java的异常跟踪栈
  6. 【机器学习算法专题(蓄力计划)】十八、机器学习中SVM算法中的硬间隔和软间隔
  7. leetcode842. 将数组拆分成斐波那契序列(回溯)
  8. java 自定义注解+AOP实现日志记录
  9. UI设计灵感|迷人的概念加载动画设计
  10. PYTORCH BN层
  11. linux查看进程加载了哪些dll,linux下动态链接库的加载及解析过程
  12. uni-app关于tabBar配置
  13. SPECCPU2006 Spec2006 使用说明
  14. Objective-C小白入门:什么是Objective-C
  15. python怎样查找收盘价_如何在Python中从晨星获得调整后的收盘价?
  16. 使用smbd实现windows和liunx的共享交互
  17. java通信—网络聊天室网络画板(简陋版)
  18. java查看端口号被占用的命令_linux下怎么查看哪些端口被占用
  19. vue 路由history模式打包部署 The requested URL * was not found on this server. 的解决方法
  20. 一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作

热门文章

  1. 牛宝宝取名起名字:寓意前程似锦、仪表不凡的男孩名字
  2. java内存模型——JMM理解
  3. 服务器中病毒要不要重装系统,五种情况必须要给电脑重装系统,这三种不用重做系统,别被骗了...
  4. windows无法访问指定设备路径或文件怎么回事(系统找不到指定路径解决方法)
  5. codeup《算法笔记》题目索引(题目+答案+思路)
  6. shell中的while
  7. 你应该知道的 纳什均衡,并且用 python 实现
  8. 【运筹优化】AFSA人工鱼群算法求解无约束多元函数最值(Java代码实现)
  9. 第一章项目学习活动记录表
  10. Android 跳转到安卓市场进行下载,跳转至应用商店下载