文件的基础必备知识(初学者入门)

news2024/7/6 21:06:13

1. 为什么使用文件

2. 什么是文件

3. 二进制文件和文本文件

4. 文件的打开和关闭

1.为什么使用文件

我们写的程序数据是存储在电脑内存中,如果程序退出,内存回收,数据就丢失,等程序再次运行时,上次的数据已经消失。面对这个问题即我们想将数据永久保存,我们就可以使用文件。

2. 什么是文件

磁盘(硬盘)上的数据的集合就是文件。

在文件功能的角度看,文件一般分为两种:程序文件、数据文件。

2.1 程序文件

程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe).

2.2 数据文件

文件内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取的文件,或者输出内容的文件。

2.3 文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用。

文件名包含3部分: 文件路径+文件名主干+文件后缀

例如:c:\code\test.txt

为了方便起见,文件标识常被称为文件名。

3. 二进制文件和文本文件

根据数据的组织形式,数据文件常被称为文本文件或者二进制文件。

数据在内存中以二进制的形式存储,如果不加转换的输出到外存中,就是二进制文件。

如果要求在外存上以ASCII的形式存储,则需要再存储前转换。以ASCII字符的形式存储的文件就是文本文件。

一个数据在文件中是如何存储的?

规则:字符一律以ASCII形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制形式存储。如有整数10000,如果以ASCII形式输出到磁盘,则磁盘中占用5个字节(每个字符一个字节),而二进制形式输出,则在磁盘上只占4个字节。

测试代码:

4. 文件的打开和关闭

4.1 流和标准流

4.1.1 流

程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输入输出操作各不相同,为了方便程序员对各种设备进行方便操作,人类抽象出流的概念,相当于一种超能力,跟各种低高等动物进行交流。

C程序针对文件、画面、键盘等的数据输入输出操作都是通过这个超能力(流)操作。

一般情况下,我们要想从流写入数据,或者从流中读取数据,都要打卡流,然后操作。

4.1.2 标准流

我们从键盘输入数据,向屏幕上输出数据,并没有打开流?

因为C语言程序在启动的时候,默认打开3个流:

   stdin - 标准输入流,在大多数情况中从键盘输入,scanf函数就是从标准输入流中读取数据。

   stdout - 标准输出流,大多数情况中输出至显示器界面,printf函数就是将信息输出到标准输出流中。

stderr - 标准错误流,大多数情况中输出到显示器界面。

stdin、stdout、stderr三个流的类型是:FILE *,通常称为文件指针。

C语言中,就是通过FILE * 的文件指针来维护流的各种操作。

4.2 文件指针

缓冲文件系统中,关键概念是"文件类型指针”,简称“文件指针”。

每个被使用的文件都在内存中开辟一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文字状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统声明的,取名FILE.

例如,vs2022编译环境提供的 stdio.h 头文件中有以下的文件类型声明:

#ifndef _FILE_DEFINED
    #define _FILE_DEFINED
    typedef struct _iobuf
    {
        void* _Placeholder;
    } FILE;
#endif

不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不比关心细节。

一般是通过一个FILE的指针来维护这个FILE结构的变量。

创建一个文件指针变量。

FILE* pf;//文件指针变量

解释:
定义pf是一个指向FILE类型数据的指针变量。可以是fp指向某个文件的文件信息(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。简单点说: 通过文件指针变量能够间接找到与它关联的文件。

如图:

4.3 文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束后关闭文件。

在编写程序的时候,再打开文件的同时,都会返回一个FILE* 的指针变量指向该文件(建立指针和文件的关联)

ANSI C规定使用 fopen 函数来打开文件,fclose 来关闭文件。

//打开文件

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

//关闭文件

int fclose ( FILE * stream );

mode表示文件打开的打开模式,下面是文件的打开模式:

文件使用方式      含义                                                                   如果指定文件不存在

"r"(只读)             为了输入数据,打开一个已经存在的文本文件   出错

"w"(只写)           为输出数据,打开一个文本文件                         建立一个新的文件

"a"(追加)           向文本文件尾添加数据                                        建立一个新的文件

"rb"(只读)           为输入数据,打开一个二进制文件                     出错

"wb"(只写)          为输出数据,打开一个二进制文件                     建立一个新的文件

"ab"(追加)          向二进制文件尾添加数据                                    建立一个新的文件

"r+"(读写)           为读和写,打开一个文本文件                            出错

"w+"(读写)           为读和写,建立一个文本文件                           建立一个新的文件

"a+"(读写)           打开一个文件,在文件尾进行读和写                 建立一个新的文件

"rb+"(读写)          为了读和写打开一个二进制文件                       出错

"wb+"(读写)        为读和写,新建一个新的二进制文件                 建立一个新的文件

"ab+"(读写)         打开二进制文件,在文件尾进行读和写            建立一个新的文件

示例代码:
 

int main()
{
	//打开文件
	FILE* fp = fopen("test.txt", "w");
	//写文件
	if (fp == NULL)
	{
		perror("fopen");
	}
	int i = 'a';
	for (i = 'a'; i <= 'z'; i++)
	{
		fputc(i, fp);
	}
	//关闭文件
	fclose(fp);
	fp = NULL;
	return 0;
}

下面还有内容,期待我更有质量的文章吧!!!

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

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

相关文章

安利一款非常不错浏览器文本翻译插件(效果很不错,值得一试)

官网地址&#xff1a;https://immersivetranslate.com/ “沉浸式翻译”这个词&#xff0c;由我们发明创造。如今&#xff0c;它已然成为“双语对照翻译”的代名词。自2023年上线以来&#xff0c;这款备受赞誉的 AI 双语对照网页翻译扩展&#xff0c;已帮助超过 100 万用户跨越语…

鸿蒙开发必备:《DevEco Studio 系列一:实用功能解析与常用快捷键大全》

系列文章目录 文章目录 系列文章目录前言一、下载与安装小黑板 二、IDE被忽略的实用功能-帮助&#xff08;Help&#xff09;1.Quick Start2. API Reference3.FAQ 三、常用快捷键一、编辑二、查找或替换三、编译与运行四、调试五、其他 前言 DevEco Studio&#xff09;是基于In…

NLP——电影评论情感分析

python-tensorflow2.0 numpy 1.19.1 tensorflow 2.0.0 导入库 数据加载 数据处理 构建模型 训练 评估 预测 1.基于2层dropout神经网络 2.基于LSTM的网络 #导入需要用到的库 import os import tarfile import urllib. request import tensorflow as tf import numpy a…

W25Q64简介

W25Q64介绍 本节使用的是&#xff1a;W25Q64&#xff1a; 64Mbit / 8MByte。存储器分为易失性存储器和非易失性存储器&#xff0c;易失性存储器一般是SRAM&#xff0c;DRAM。非易失性存储器一般是E2PROM&#xff0c;Flash等。非易失性存储器&#xff0c;掉电不丢失。 字库存储…

单片机嵌入式计算器(带程序EXE)

单片机嵌入式计算器 主要功能&#xff1a;完成PWM占空比计算&#xff0c;T溢出时间&#xff08;延时&#xff09;&#xff1b; [!NOTE] 两个程序EXE&#xff1b; [!CAUTION] 百度网盘链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1VJ0G7W5AEQw8_MiagM7g8A?pwdg8…

java线程生命周期介绍

Java线程的生命周期包含以下几个状态&#xff1a; 1.新建(New)&#xff1a;线程对象被创建&#xff0c;但是还没有调用start()方法。 1.运行(Runnable)&#xff1a;线程正在运行或者是就绪状态&#xff0c;等待CPU时间片。 1.阻塞(Blocked)&#xff1a;线程暂时停止执行&…

Nginx 精解:正则表达式、location 匹配与 rewrite 重写

一、常见的 Nginx 正则表达式 在 Nginx 配置中&#xff0c;正则表达式用于匹配和重写 URL 请求。以下是一些常见的 Nginx 正则表达式示例&#xff1a; 当涉及正则表达式时&#xff0c;理解各个特殊字符的含义是非常重要的。以下是每个特殊字符的例子&#xff1a; ^&#xff1…

修复损坏的Excel文件比你想象的要简单,这里提供几种常见的修复方法

打开重要的Excel文件时遇到问题吗?Microsoft Excel是否要求你验证文件是否已损坏?Excel文件可能由于各种原因而损坏,从而无法打开。但不要失去希望;你可以轻松修复损坏的Excel文件。 更改Excel信任中心设置 Microsoft Excel有一个内置的安全功能,可以在受限模式下打开有…

Failed to start gdm.servide - GNOME Display manager

启动虚拟机时&#xff0c;卡在Failed to start gdm.servide - GNOME Display manager不动。 解决方法: 1.重新启动Ubuntu&#xff0c;在进度条未结束之前&#xff0c;长按shift直到界面跳转到选项菜单。 2.选择第二个&#xff0c;按enter进入 3.选择最新版本&#xff08;后面…

MySQL时间和日期类型详解(零基础入门篇)

目录 1. DATE 2. DATETIME 3. TIMESTAMP 4. TIME 5. YEAR 6. 日期和时间的使用示例 以下SQL语句的测试可以使用命令行&#xff0c;或是使用SQL工具比如MySQL Workbench或SQLynx等。 在 MySQL 中&#xff0c;时间和日期数据类型用于存储与时间相关的数据&#xff0c;如何…

摄影软件使用小技巧

记录摄影过程中使用一些软件的技巧&#xff0c;方便后续查阅。 摄影软件使用小技巧 Pr制作延时视频用PS批量转换RAW照片Lightroom批量处理照片月亮后期堆栈——RegiStax6 Pr制作延时视频 新建序列 选择需要的格式 用PS批量转换RAW照片 Lightroom批量处理照片 按 Shfit&#xf…

解决Spark流处理产生的小文件问题

做流批一体&#xff0c;湖仓一体的大数据架构&#xff0c;常见的做法就是&#xff1a; 数据源->spark Streaming->ODS&#xff08;数据湖&#xff09;->spark streaming->DWD&#xff08;数据湖&#xff09;->... 那么数据源->spark Streaming->ODS&…

档案数字化管理的工具有哪些

档案数字化管理的工具可以包括以下几种&#xff1a; 1. 扫描仪/数字拍摄仪&#xff1a;用于将纸质文件数字化为电子文件的工具。 2. OCR&#xff08;光学字符识别&#xff09;软件&#xff1a;用于将扫描或拍摄的图像文件转换为可编辑的文本文件。 3. 文件管理系统/专久智能电子…

英语国际音标 - DJ 音标 - KK 音标

英语国际音标 - DJ 音标 - KK 音标 1. 国际音标 (International Phonetic Alphabet&#xff0c;IPA)1.1. 记音类型1.2. 48 个国际音标发音表1.2.1. 元音 (vowel)1.2.1.1. 单元音 (monophthong)1.2.1.2. 双元音 (diphthong) 1.2.2. 辅音 (consonant)1.2.2.1. 清音 (voiceless so…

企业内网安全软件分享,有什么内网安全软件

内网安全&#xff1f; 其实就是网络安全的一种。 什么是内网安全软件&#xff1f; 内网安全软件是企业保障内网安全的一种重要工具。 它主要帮助企业实现对网络设备、应用程序、用户行为等方面的监控和管理&#xff0c;以预防和应对各种网络攻击。 这类软件主要用于对内网中…

入侵报警系统的智慧核心——ARMxy工控机深度应用

智能安防领域高清视频监控、人脸识别门禁系统以及入侵报警系统的智能化升级&#xff0c;正以前所未有的速度推动着行业的变革。在这场变革中&#xff0c;ARMxy工业计算机以其卓越的性能、高度的灵活性及强大的集成能力&#xff0c;成为了众多安防解决方案中的核心组件。 高清视…

CorelDRAW2024破解激活码序列号一步到位

亲们&#xff0c;今天给大家种草一个神奇的软件——CorelDRAW破解2024最新版&#xff01;&#x1f3a8;这是一款专业级的矢量图形设计软件&#xff0c;无论你是平面设计师、插画师还是设计师&#xff0c;都能在这个软件中找到你需要的工具和功能。✨ 让我来给大家介绍一下这款软…

MySQL事务,视图,用户管理学习笔记【事务概念 | 事务隔离级别 | 设置级别 | 视图 | 用户管理】

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;MySQL之旅_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 一&#xff0c;事务初…

现代x86汇编-环境安装

今天端午节&#xff0c;独自在家&#xff0c;翻阅了张银奎老师编写的《现代x86汇编语言程序设计》一书&#xff0c;前言部分说明书中示例代码都是用微软visual C工具编写并使用微软宏汇编&#xff08;著名的MASM&#xff09;编译的&#xff0c;好久没有用微软vc了&#xff0c;假…

48岁冻龄女神性感现身。

千禧台湾性感女神林熙蕾&#xff0c;昔日凭《赌侠大战拉斯维加斯》、《千王之王2000》等作品成名&#xff0c;成为港产片一代女神&#xff0c;今年林熙蕾惊喜参演王家卫执导剧集《繁花》&#xff0c;再度于华语影视坛受注目。6月6日于台湾现身品牌活动&#xff0c;以一袭银色超…