文件操作和流的部分内容

目录

​编辑

1为什么要使用文件

1.1程序⽂件

1.2数据文件

2⽂件的打开和关闭

2.1流

2.2打开文件和关闭文件

fopen

fclose 


1为什么要使用文件

首先我们来看一下这个代码

#include<stdio.h>
int main()
{
     int n;
     scanf("%d",&n);
     printf("%d",n);
     return 0;
}

 当我们运行程序的时候每次都需要我们去输入一个值,当我们把程序关闭的时候,你之前输入的数据就不见,并没有持久话的保存起来。

但是当我们去创建一个文件,在里面输入值,等我们下一次打开的时候这个值还在那个文件里面。

是因为我们的这个文件是放在硬盘里面的,而放在硬盘里面的会持久的保存起来。

而上面的程序是在内存中创建的变量,在程序结束的时候内存会被回收,那么这个就不能能持久保存。

所以为了要我们的数据持久的保存下来,我们可以使用文件。

2

在磁盘(硬盘)上的文件就是文件。

像:

在程序设计中我们的文件分为两类:数据文件和程序⽂件。(功能方面)。 

1.1程序⽂件

程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。

1.2数据文件

⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或
者输出内容的⽂件。

我们怎么来区分不同的文件呢是通过:文件名,

文件名包括3个部分:文件路径+文件名主干+文件名后缀。

数据文件我们可以分为:二进制文件和文本文件。 

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

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

例如:假如你在输入 10000;

你如果是以二进制的形式存进去的不加转换的输出到外存,输出的是二进制,这就是二进制文件,这是只占4个字节,而如果我们输出的时候是先先将1转换成字符 0转换成字符存进去的时候就是文本文件。占5个字节。

2⽂件的打开和关闭

2.1流

我们程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输⼊输出 操作各不相同,为了⽅便程序员对各种设备进⾏⽅便的操作,我们抽象出了流的概念,我们可以把流 想象成流淌着字符的河。
一般我们要从流里面去读取数据或者输入数据,都是要先打开文件。
标准流
那为什么我们从键盘输⼊数据,向屏幕上输出数据,并没有打开流呢?
那是因为C语⾔程序在启动的时候,默认打开了3个流:
  stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。
  stdout - 标准输出流,⼤多数的环境中输出⾄显⽰器界⾯,printf函数就是将信息输出到标准输出 流中。
  stderr - 标准错误流,⼤多数环境中输出到显⽰器界⾯。
这是默认打开了这三个流,我们使⽤scanf、printf等函数就可以直接进⾏输⼊输出操作的。
stdin、stdout、stderr 三个流的类型是: FILE * ,通常称为⽂件指针。
C语⾔中,就是通过 FILE* 的⽂件指针来维护流的各种操作的。
文件指针
每个被使⽤的⽂件都在内存中开辟了⼀个相应的⽂件信息区,⽤来存放⽂件的相关信息(如⽂件名
字,⽂件状态及⽂件当前的位置等)。这些信息是保存在⼀个结构体变量中的。该结构体类型是由系 统声明的,取名 FILE。
创建文件指针变量:
FILE* (名字);
定义pf是⼀个指向FILE类型数据的指针变量。可以使pf指向某个⽂件的⽂件信息区(是⼀个结构体变 量)。通过该⽂件信息区中的信息就能够访问该⽂件。也就是说,通过⽂件指针变量能够间找到与 它关联的⽂件
当我们打开一个文件的时候这个文件信息区会被自动创建,我们不用关心这个里面有什么(FILE结构体里面)。
等我们不想用这个文件了就可以关闭文件了。

2.2打开文件和关闭文件

我们有两个函数用来完成这两个功能:

fopen和fclose;

fopen

FILE * fopen ( const char * filename, const char * mode );
传一个文件名, mode表⽰⽂件的打开模式
打开方式有:

fclose 

int fclose ( FILE * stream )
传入指向那个 你要关闭的文件的 文件指针。
它两的例子:
#include <stdio.h>
int main ()
{
 FILE * pFile;
 //打开⽂件
 pFile = fopen ("myfile.txt","w");
 //⽂件操作
 if (pFile!=NULL)
 {
 //关闭⽂件
 fclose (pFile);
 }
 return 0;
}

这里如果你没有那个文件的话,因为用“w”的方式打开的,所以他会自己建立一个新的文件叫这个名字,再去打开。 

后面我们在讲打开文件之后我们要在文件里面写内容的话,所用到的函数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小w o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值