【C语言】计算机中的流和文件概述(文件的概念及打开关闭)

【C语言】计算机中的流和文件概述(文件的概念及打开关闭)

目录

一、计算机中流

二、文件

1.文件的概念

2.文件的分类

3.文件的缓冲区

4.文件指针

三、文件的打开和关闭

在C语言中,将在不同的输入/输出设备之间进行传递的数据抽象为“流”。

当一段程序中调用scanf()函数时,会有数据经过键盘流入存储器,当调用printf()函数,会有数据从存储器流向屏幕。

流实际上就是一个字节序列,输入函数的字节序列被称为输入流,输出函数的字节序列称为输出流。

根据数据形式,输入输出流可以分为文本流(字符流)和二进制流。

文本流和二进制流的主要差异:

在文本流中输入输出的数据是字符或字符串,可以被修改;

二进制流中输入输出是一系列二进制的0、1代码,不能以任何方式修改。

二、文件

1.文件的概念

文件是存储在外部介质上的数据集合。

一个文件需要有唯一的文件标识,以便用户根据标识找到唯一确定的文件,方便用户对文件的识别和引用。

文件标识的组成部分:文件路径、文件名主干、文件扩展名

操作系统以文件为单位,对数据进行管理,若想找到存放在外部介质上的数据,必须先按照文件名找到指定文件,再从文件中读取数据。

2.文件的分类

文件可以分为两类:①文本文件;②二进制文件

(1)文本文件:(又称ASCII文件)该文件中一个字符占用一个字节,存储单元中存放单个字符对应的ASCII 码。

例如:需要存储一个整型数据112185,则数据在磁盘上存放的形式如下:

特点:文本文件中的每个字符都需要占用一个字节的存储空间,并且在存储是需要进行二进制和ASCII码之间的转换,因此使用这种方式既消耗时间,又浪费空间。

(2)二进制文件:数据在内存中以二进制形式存储,如果不加转换地输出到外存,则输出的文件就是一个二进制文件。

二进制文件是存储在内存的数据的映像,也称映像文件。若使用二进制文件存储112185,则数据首先被转换为二进制的整数1101 1011000111001,将该二进制整数存放在磁盘上。

使用二进制文件存放时,只需要4个字节的存储空间,并且不需要进行转换,如此既节省时间,有节省空间。但这种存放方法不够直观,需要经过转换后才能看到存放的信息。

3.文件的缓冲区

C语言使用的文件系统分为:缓冲文件系统(标准I/O)和非缓冲文件系统(系统I/O)

ANSIC标准采用“缓冲文件系统”处理文件。

缓冲文件系统:系统自动在内存中为正在处理的文件划分出一部分内存作为缓冲区。当从磁盘读入数据时,数据要先送到输入缓冲区,然后再从缓冲区中逐个把数据传送给程序中的变量;当内存向磁盘中输出数据时,必须先把数据装入输出文件缓冲区,装满后,才将数据从缓冲区写到磁盘。

使用文件缓冲区可以减少磁盘的读写次数,提高读写效率。通过文件缓冲区读写文件的过程如下:

4.文件指针

在C语言中,所有的文件操作都必须依靠指针来完成,因此在对文件进行操作之前,必须先使指针与文件建立联系。

文件指针的定义格式如下:

FILE *变量名;

例如:FILE *fp;//定义了一个FILE类型的指针变量fp,但该指针还没有与文件建立联系。通常使用fopen()函数为文件指针变量赋值。

一个文件指针变量只能指向一个文件。即要操作多少个文件,就需要定义同样数量的文件指针。

三、文件的打开和关闭

在对文件进行读写之前,需要先打开文件;读写结束后,需要及时关闭文件。

(1)打开文件

C语言提供了一个专门用于打开文件的函数——fopen()函数,函数原型如下:

FILE*  fopen(char*  filename,  char*  mode);

【注释】

返回值类型FILE*表示该函数返回值为文件指针类型;

参数filename用于指定文件的绝对路径,即用来确定文件包含路径名、文件名主干、扩展名的唯一标识;

参数mode用于指定文件打开模式。

·文件正常打开,函数返回指向该文件的文件指针;文件打开失败,函数返回NULL。

一般在调用该函数后,为了保证程序的健壮性,会进行一次判空操作。

FILE *fp;

fp=fopen("D:\\test.txt","r");

if(fp==NULL)

{

printf("FILE open error");

exit(0);

}

(2)关闭文件

关闭文件的目的是释放缓冲区以及其他资源。若打开的文件不关闭,将会慢慢耗尽系统资源。

C语言提供了一个专门用于关闭文件的函数——fclose(),函数原型:

int fclose(FILE* fp);

【注释】

返回值类型为int,如果成功关闭则返回0,否则,返回EOF;

函数中的参数fp表示待关闭的文件

(3)文件的打开模式

常见的打开模式如下表:

打开模式名称描述

r/rb只读以只读的方式打开一个文本文件/二进制文件,如果文件不存在或无法找到,fopen()函数调用失败,返回NULL。

w/wb只写以只写的方式打开一个文本文件/二进制文件,如果文件已存在,重写文件

a/ab追加模式以只写的方式打开一个文本文件/二进制文件,只允许在该文件的末尾追加数据,如果文件不存在,则创建新文件

r+/rb+读取/更新模式以读/写的方式打开一个文本文件/二进制文件,如果文件不存在,fopen()函数调用失败,返回NULL。

w+/wb+写入/更新模式以读/写的方式打开一个文本文件/二进制文件,如果文件已存在,重写文件

a/ab+追加/更新模式打开一个文本文件/二进制文件,运行进行读取操作,但只允许在文件末尾添加数据,如果文件不存在,重新创建新文件。

在对文件进行操作时,需要根据本次操作的目的,使用不同的模式打开文件。

【C语言】计算机中的流和文件概述(文件的概念及打开关闭)相关教程

编程案例——layui的table表格并获取选中的数据、layui监控selec

编程案例——layui的table表格并获取选中的数据、layui监控select下拉框并将隐藏的div显示 layui table表格展示 效果 代码 前端代码 后端代码:我们需要注意后端给前端返回数据的格式 获取radio标签所对应的数据条目 问题描述 解决办法 layui监控select下拉框

计算机网络实验

计算机网络实验 实验目录 前期准备 参考资料 一、验证性实验 1.ipconfig 2.ping 3.tracert 4.ARP 5.DHCP 6.netstat 7.DNS 8.cache 二、Wireshark实验 三.Cisco Packet Tracer实验 总结 前期准备 需要软件: Cmder Cmder下载1 Cmder下载2(官网) Wireshark Wi

《WebRTC实时通信》笔记3——第二章 处理浏览器中的媒体

《WebRTC实时通信》笔记3——第二章 处理浏览器中的媒体 摘要:利用浏览器提供的API获取本地媒体流并在浏览器内播放。 2.1 MediaStream W3C Media Capture and Streams 文档定义了一组 JavaScript API,这些API使应用程序能够从平台 请求音频和视频流,以及操

Win10 通过Java API对虚拟机中的HDFS进行读写操作

Win10 通过Java API对虚拟机中的HDFS进行读写操作 Win10 Hadoop开发 一、前言 二、虚拟机设置 2.1 端口设置 2.2 开放端口 三、Windows Java配置 3.1 JDK下载 3.2 JAVA环境变量 四、Windows Hadoop配置 4.1 下载Hadoop 4.2 Hadoop环境变量 4.3 安装winutils.ex

安装window10出错:选中的磁盘具有 MBR 分区表。在 EFI 系统上,

安装window10出错:选中的磁盘具有 MBR 分区表。在 EFI 系统上,Windows只能安装到GPT磁盘。 title: Windows无法安装到这个磁盘。选中的磁盘具有 MBR 分区表。在 EFI 系统上,Windows只能安装到GPT磁盘。 date: 2020-03-30 tags: 随笔 categories: 生活 下面

2020/10/23二分法

2020/10/23二分法 练习使用二分法 高中的时候学过对分查找,但是还没怎么使用过,这次试试看。 题目: 一开始我想的是用快速幂求(因为最近学了这个,所以想遛一遛),结果因为数据太大中途归零出错了,这段代码在下面: #includeiostreamusing namespace std

NLP中的数据增广方法

NLP中的数据增广方法 NLP中的数据增广方法 author: Heisenberg date:2020-09-20 CV 主要以图像中心旋转、灰度变换为主,图像本身含义变化不大。NLP则对此非常敏感。 一、词汇替换 基于同义词典的替换 WordNet: For English ChineseSemanticKB:For Chinese

C语言建立二叉树的二叉链表结构,并显示二叉树

C语言建立二叉树的二叉链表结构,并显示二叉树 按照先序顺序输入二叉树,空的位置用#表示,比如下图的就用ABD##E##C#F##表示 最后的显示效果为用括号表示的二叉树,“,”前为左孩子,后面为右孩子。 下面上我拙劣的代码(* ̄︶ ̄) #include stdio.h#include s

c语言中关闭文件的作用,【C语言】计算机中的流和文件概述(文件的概念及打开关闭)...相关推荐

  1. itunes在计算机中丢失,在ITUNES启动中提示没法启动此程序,因为计算机中丢失mediatoolbox.dlll.是什么问...

    在ITUNES启动中提示无法启动此程序,因为计算机中丢失mediatoolbox.dlll问题的解决方法如下: 一.如果在运行某软件或编译程序时提示缺少.找不到coreaudiotoolbox.dll ...

  2. c语言中初始化的主要作用,C语言初始化——栈的初始化

    栈是一种具有后进先出性质的数据组织方式,也就是说后存放的先取出,先存放的后取出.栈底是第一个进栈的数据所处的位置,栈顶是最后一个进栈的数据所处的位置. 1.满栈与空栈 根据SP指针指向的位置,栈可以分 ...

  3. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  4. c语言中的除号什么作用,c语言中除号用什么表示

    前言继承是OOP设计中的重要概念.在C++语言中,派生类继承基类有三种继承方式:私有继承(private).保护继承(protected)和公有继承(public).一.继承规则继承是C++中的重要特 ...

  5. C语言文件缓冲区作用,C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲...

    //文件结构体FILE的理解以及缓冲区再讲 #include #include //要点:文件结构 //struct _iobuf { // char *_ptr; ------当前缓冲区内容指针 / ...

  6. c语言创建文件的作用,C语言文件与目录(一)

    注意包含头文件 #include #include 1.创建与删除目录 在Linux系统中,目录就是一个文件夹,文件可以存放在目录中.目录是一种特殊的文件,需要对目录设置权限. 创建目录函数mkdir ...

  7. c语言中各种函数的作用,C语言常用函数用法大全

    C语言是当中广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率高的计算机语言,既能完成上层应用开发,也能完成底层硬件驱 ...

  8. c语言中循环结构的作用,C语言循环结构知识点

    C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...

  9. C语言中动态数组的作用,C语言实现动态数组

    前言 在纯C语言编程中,数组的创建必须是固定的大小,因为C语言本身没有提供动态数组这种数据结构,这是一个让习惯了使用高级语言编程的人转做C开发面临的一个很头疼的问题,本篇文章就将介绍如何使用纯C语言编 ...

最新文章

  1. 利用pandas读写HDF5文件
  2. kvm-桥接模式(二)
  3. C#下如何实现服务器+客户端的聊天程序
  4. awt简单应用 panel面板
  5. 祖传人像玩家,如何把AI秀出新高度
  6. python---tornado钩子预留解析
  7. matlab 等分矩阵,用matlab根据列拆分矩阵.
  8. iis6.0与asp.net的运行原理
  9. c#如何实现从xml中加载树目录,并且显示完整的Text
  10. 更新日志_CargoWare系统云平台更新日志2020.11.24
  11. 自定义垂直方向滑动的ViewGroup
  12. python如何使用gpu_tensorflow 在windows 下怎么使用gpu ?
  13. 计算机输入法如何显示在桌面快捷方式,笔记本win7系统如何设置搜狗手写输入法桌面快捷方式...
  14. C语言赋值被截断,c语言中赋值截断
  15. 常用生物信息 ID 及转换方法
  16. CentOS 7中jdk1.8安装
  17. 安卓基础巩固(二):四大组件:Activity、Service、Broadcast、Content Provider
  18. linux内核启动过程和启动第一个应用程序
  19. 王者荣耀测试自己本命英雄软件,王者荣耀在哪测本命英雄
  20. 你们还不知道这几个批量处理图片大小的方法吗?

热门文章

  1. 物联网卡平台提供哪些服务
  2. CorelDRAW中的图框改如何精确剪裁
  3. 系统运维 SysOM profiling 在云上环境的应用观测实践
  4. 数组A[10][15]的每个元素都是占4个字节的数据,将其按列优先次序存储
  5. 第一章:互联网的概述
  6. 客户真正想要的12件东西
  7. 学计算机远程控制,怎样远程控制另一台电脑的方法步骤
  8. zhang-Suen图像骨架提取(原理和代码)
  9. 要这样运用绩效考评结果......
  10. WebService详细讲解