C语言的文件和文件操作

本文介绍了计算机文件的概念,包括程序文件、数据文件(文本和二进制),以及如何通过文件名标识文件。重点讲解了文件的打开、关闭、流和标准流、文件指针的作用,以及如何使用fopen和fclose进行文件操作。
摘要由CSDN通过智能技术生成

目录

前言

一、文件

程序文件

数据文件

文本文件                

二进制文件

文件名

二、文件的打开和关闭

流和标准流

文件指针

通过文件指针变量能够间接找到与他关联的文件

文件的打开和关闭

2.文件的顺序读写


前言

如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤ ⽂件。


一、文件

文件是什么?

硬盘上的文件是文件

  • 程序文件

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

下图为计算机的工作原理图,可以看到我们的程序区是在内储存器中的,计算机的硬件的基本结构是由储存器,控制器,运算器,输入和输出设备组成的(插入了个题外话,不过能帮助我们更好的理解)


  • 数据文件

文件的内容不一定是程序,而是程序运行时读写的数据,比如下文中我们将的文件,是程序员从中读取数据的文件(通俗来讲就是给我们提供读取数据的文件)(如果理解不正确欢迎大家指正

根据数据的组织形式,可分为以下两种

  • 文本文件                

文本文件通常是指在外存(如硬盘、闪存驱动器等)上以ASCII字符集或某种扩展的字符集(如Unicode)来储存数据的文件。

  • 二进制文件

“二进制文件”是指在外存上以二进制形式储存的任何类型的文件,这些文件的数据并非直接以字符形式表示,而是以机器可以理解和执行的原始二进制编码存储。


  • 文件名

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

(文件标识)文件名包含三部分:文件路径+文件主干名+文件后缀(可以标识文件的类型和格式,某些情况可没有,但一般都要加上)

eg:c:\code\test.txt

那么一个数据在文件中是怎么储存的呢?

字符均以ASCII码的形式存储,数值型数据既可以用ASCII形式存储,也可以使用二进制(当然选择怎么的储存形式会根据具体的数据来考虑)

二、文件的打开和关闭

  • 流和标准流

流:流(Stream)是一个通用的概念,用于表示数据的序列或连续流动

标准流:

  • stdin-标准输入流,大多都是从键盘中输入
  • stdout-标准输出流,大多数的环境中输出至显示器界面
  • stderr-标准错误流,同上

以上三个流的类型是:FILE*,通常称为文件指针

  • 文件指针

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

通过文件指针变量能够间接找到与他关联的文件
//定义一个文件指针
FILE*pf;
  • 文件的打开和关闭

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

此时我们使用fopen函数来打开文件,用fclose函数来关闭文件

//打卡文件
FILE*pf=fopen(const char*filename,const char*mode);
//关闭文件
fclose(FILE*stream);

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

代码示例:

#include <stdio.h>
int main()
{
FILE*pfile;//定义一个文件指针变量
pfile=fopen("text.c","w");//打开一个text.c的文件,进行写
if(pfile==NULL)
{
   perror("fopen");
   return 1;//如果文件打开失败则结束程序
}

fputs("abcdefg",pfile);//将字符串写入文件
fclose(pfile);
pfile=NULL;
return 0;
}

2.文件的顺序读写

具体的函数的介绍,过于复杂和繁琐,需要讲解的话,大家可以在评论区留言需要,我可以下一次出

  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值