fopen、fclose使用方法详解

  • 1.I/0的管理分类
    • 1.1打开流
    • 1.2关闭流
    • 1.3代码实操
    • 1.4运行截图

无论是编写系统程序还是应用程序,都离不开I/O这个重要的环节。
相对于低级的I/O操作(即系统调用级的I/O),标准l/O库函数处理了很多细节,如缓存分配等。
考虑到代码的可移植性,开发人员应该在编写代码时尽可能使用标准库函数。

1.I/0的管理分类

◆由ANSI标准提供的标准IO库函数几乎被所有的操作系统支持,如winsdows’ 下编写的程序几乎不用做任何修改就可以在linux’下重新编译运行。如: fopen、 fread、 fwrite、fclose。
◆以系统调用的方式给用户提供函数接口(遵循POSIX标准)例如linux操作系统提供的文件I0接口。如:open、close、 read、 write、 ioctl.
◆系统调用与操作系统直接相关,直接使用系统调用编写的程序的可移植性差。
◆头文件<stdio.h>中声明了标准C的I/O库,标准C的I/O库在所有通用计算机上的C语言实现都是相同的。
◆对于标准I/O操作函数来说,打开或创建一个文件的时候,会返回一个指向FIL E结构体的指针。
◆FILE结构体包含了I/O函数库为管理文件所需要的尽可能多的信息。包括了用于I/O文件的文件描述符、指向流缓存的指针、缓存长度等。
< >定义路径: /usr/include/libio.h 0别名(typedef): /usr/include/stdio.h

1.1打开流

◆头文件: #include <stdio.h>
◆定义函数: FILE* fopen(const char *pathname, const char *mode);
函数说明:
➢pathname: 文件的路径及文件名。
➢mode: 流的打开方式。
◆返回值:
➢成功: 返回指向该流的指针。
➢失败: 则返回NULL,并把错误代码存在errno中。

1.2关闭流

头文件: #include <stdio.h>
◆定义函数: int fclose(FILE *stream);
◆>函数说明:
➢fclose用来关闭fopen打开的文件。此动作会让缓冲区的数据写入文件中,并释放系统所提
供的文件资源。
◆返回值:
➢成功返回0;
➢失败返回EOF,并把错误代码存到errno中。

1.3代码实操

#include<stdio.h>
int main()
{FILE *fp;   //定义文件指针
fp=fopen("fork","a");   //fopen返回值给指针,注意两个参数形式
if(fp==NULL)          //判断是否成功
{printf("no");
}
else
{printf("sucess\n");
}
int i;      //介绍关闭流
i=fclose(fp);           //fclose函数返回值i,参数是打开文件指针
if(i==0)                //是否关闭成功
{printf("ok\n");
}
else
{printf("file close error\n");
}
return 0;
}

1.4运行截图

Linux下标准I/O库函数fopen、fclose函数的使用方法相关推荐

  1. linux在指定行添加内容,linux下利用shell在指定的行添加内容的方法

    linux下利用shell在指定的行添加内容的方法 在linux的一些配置中总会要进行某个文件中的某行的操作,进行增加,修改,删除等操作. 而这里主要是进行的是指定的行添加数据的操作: 脚本如下: s ...

  2. Linux下程序崩溃dump时的 core文件的使用方法

    Linux下程序崩溃dump时的 core文件的使用方法 1.在启动程序前执行 ulimit -c unlimited unlimited 表示生成文件的大小限制,也可以修改为自定义的大小,例如: u ...

  3. linux下各种格式的压缩包的压缩、解压方法

    用户经常需要备份计算机系统中的数据,为了节省存储空间,常常将备份文件进行压缩.下面介绍一下备份与压缩的命令,大致总结了linux下各种格式的压缩包的压缩.解压方法.但是部分方法我没有用到,也就不全,希 ...

  4. Linux下MySql出现#1036 – Table ‘ ‘ is read only 错误解决方法

    Linux下MySql出现#1036 – Table ' ' is read only 错误解决方法 参考文章: (1)Linux下MySql出现#1036 – Table ' ' is read o ...

  5. linux下java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider解决方法

    linux下java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider解决方法 参考文章: ( ...

  6. 【转】Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现

    转自:Linux下c++调用自己编写的matlab函数:通过mcc动态链接库.so实现_Jaster_wisdom的专栏-CSDN博客 之前在这里和这里调用了matlab自带的一些函数,是通过matl ...

  7. linux select函数好处,linux下的epoll较之传统的select函数比较其优点

    linux下的epoll较之传统的select函数比较其优点 突破了单进程打开SOCKET描述符最大数目的限制,select单进程打开FD的数据是有限制的,由FD_SETSIZE设置,默认值是2048 ...

  8. linux服务器mv文件,linux下使用mv命令移动文件到指定目录的方法

    linux下使用mv命令移动文件到指定目录的方法 发布时间:2020-10-30 10:01:25 来源:亿速云 阅读:83 作者:小新 这篇文章给大家分享的是有关linux下使用mv命令移动文件到指 ...

  9. Linux下判断磁盘是SSD还是HDD的几种方法

    文章目录 1.使用Linux相关命令 2.linux查看磁盘所在槽位 1.使用Linux相关命令 方法1: 如果是直通盘,即JBOD模式,方法则正确 如果返回1则表示磁盘可旋转,那么就是HDD了:反之 ...

最新文章

  1. Javascript作用域问题的构造函数的变量
  2. 【Flutter】监听滚动动作 控制组件 透明度渐变 ( 移除顶部状态栏空白 | 帧布局组件 | 透明度组件 | 监听滚动组件 )
  3. 微信小程序设置云函数使用的环境
  4. 四十五、和我一起看看,国外的Python考试到底是怎么样(上篇)
  5. C语言高级编程:利用堆栈溢出修改函数返回地址
  6. pojo类无法注入service解决示例
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的家庭财务管理系统
  8. 观周教授新冠报告而作
  9. 在RedHat Linux下安装惠普磁带机(转)
  10. 反转链表——Java递归求解
  11. Python-Level2-day04:正则表达式概述,元字符使用,匹配规则(特殊字符匹配,贪与非贪婪模式,分组),re模块使用
  12. 大数据时代,个人信息安全由谁来保护?
  13. freeipa 客户端 Kerberos认证 SSSD关系
  14. 苹果与希捷 到底谁的错
  15. Linux公社 学习连接
  16. sync failed 错误 springboot
  17. 为什么谷歌越来越牛逼, 而百度却沦为江湖骗子?
  18. 微信链接卡片在线制作工具及教程
  19. 全球及中国吊臂汽车起重机行业研究及十四五规划分析报告
  20. 医院信息系统(HIS)的“一个都不能少”!

热门文章

  1. 如何开网店,itdaxue手把手教你开店方法。
  2. 5款热门可视化工具对比,老板直呼酷炫!
  3. Docker - 配置DaoCloud的Docker加速器2
  4. Go语言圣经的知识图谱
  5. Win10 主题 美化 动漫
  6. 2016-中国。联通移动号码归属地查询(省市代码)
  7. 3.1 多集放大电路的耦合方式
  8. 基于C++实现的用于OpenAL的 .wav音频加载器
  9. Python+Tableau第七次人口普查可视化分析
  10. LT Spice XVII无源滤波器设计。