服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言文件操作详情(一)

C语言文件操作详情(一)

2022-11-20 16:22不知名小赖 C/C++

这篇文章主要介绍了C语言文件操作详情,主要讨论的是数据文件,通过处理的磁盘上的文件展开主题内容介绍,需要的小伙伴可以参考一下,希望对你的学习有所帮助

前言:

文件操作重要吗?

当然重要:如果我们想让自己的程序拥有记忆功能,那就需要把要记忆的信息和数据存入到一个外部文件里,以便下次提取。

一、文件是什么

磁盘上的文件是文件。但在程序设计中,我们一般谈的文件有两种:程序文件、数据文件

  • 程序文件:包括源程序文件(后缀 .c),目标文件(后缀 .obj)可执行程序(windows环境后缀为 .exe)。
  • 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或则输出内容的文件。

VS编译器上所处理的数据的输入和输出都是以终端为对象的,即从终端的键盘上输入输入数据,运行结果显示到显示器上。但在有时候我们会把数据输出到磁盘上,在需要的时候再从磁盘上把数据读取到内存中使用,这里就是处理的磁盘上的文件。

文件包含三部分:文件路劲+文件名主干+文件后缀  

例如:c:code est.txt

二、文件类型

根据数据的组织形式数据文件被称为文本文件二进制文件

  • ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码
  • 数据在内存中以二进制的形式存储,如果不加转换的输出到外层,就是二进制文件

例如,数1000的存储形式为:

ASCLL码形式: 00110001 00110000 00110000 00110000 00110000 占5个字节
二进制形式存储:00000000 00000000 00100111 00010000 占4个字节

三、文件缓冲区

我们在学习C语言文件操作时我们也要简单的了解一下C语言的文件缓冲区概念:

  • 缓冲区Buffer)又称为缓存(Cache),是内存空间的一部分。也就是说,计算机在内存中预留了一定的存储空间,用来暂时保存输入或输出的数据,这部分预留的空间就叫做缓冲区(缓存)。
  • 在程序数据区到磁盘之间有输出缓冲区输入缓冲区,这些有兴趣的可以去深入了解一下

缓冲区是为了让低速的输入输出设备和高速的用户程序能够协调工作,并降低输入输出设备的读写次数。

四、文件指针

缓冲文件系中:关键的概念是“文件类型指针”,简称**“文件指针”**
  每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如:文件的名字,状态及文件当前的位置等)。这些信息保存在一个结构体变量中的。该结构体变量是有系统申明的取名:FILE

在使用的vs2013编译器的头文件stdio.h有以下的文件类型声名:

C语言文件操作详情(一)

不同c编译器的FILE所包含的内容不完全相同,但是大同小异,

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

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

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

定义pf是一个指向FILE类型数据的指针变量,可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就可以访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件

C语言文件操作详情(一)

五、文件的打开和关闭

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

编写程序时,在打开文件的同时,都会返回一个FILE的指针变量指向该文件相当于建立了指针与文件的关系。

  • fopen 函数打开文件,fclose 来关闭文件
FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);

打开文件一般有两种方式:

  • 当前路劲下(相对路径)打开文件
  • 绝对路径打开
//以读的方式打开
//当前路劲下(相对路径)打开文件test.txt
fopen("test.txt", "r");
//绝对路径打开
fopen("E:C++filefile	est.txt", "r");

打开方式如下:

  • “r”(只读) 为输入打开一个已经存在的文本文件
  • “w”(只写) 为输出打开一个文本文件
  • “a”(追加) 向文件文件尾添加数据
  • “rb”(只读) 为输入打开一个二进制文件
  • “wb”(只写) 为输出打开一个二进制文件
  • “r+”(读写) 为读写打开一个文本文件
  • “w+”(读写) 为读写建立一个新的文本文件
  • “a+”(读写) 为读写打开一个文本文件
  • “rb+”(读写) 为读写打开一个二进制文件
  • “wb+”(读写) 为读写建立一个新的二进制文件
  • “ab+”(读写) 为读写打开一个二进制文件

注意:

  • 用 “r” 方式打开的文件,不能向其输入数据,并且该文件已存在,否则出错;
  • 用 “w” 方式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件;
  • 如果函数 fopen 打开文件出错,则fopen返回一个空指针值 NULL;
  • 在程序开始运行时,系统自动打开3个标准文件:标准输入(stdin),标准输出(stdout),标准出错输 出(stderr)。如果要使用输入输出终端,则不需要打开,可以直接使用,如fputc(stdout,‘a’);向屏幕输出字符a。

C语言文件操作详情(一)

  • 以读的形式打开文件文件必须存在
  • 以写的形式打开的文件,只能向该文件输入数据,如果所打开的文件不存在,则在打开时新建一个以指定的名字命名的文件;如果指定文件存在,则在打开时将该文件删去,然后新建一个新的文件;

到此这篇关于C语言文件操作详情(一)的文章就介绍到这了,更多相关C语言文件操作内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.51cto.com/u_15542682/5222342

延伸 · 阅读

精彩推荐
  • C/C++利用C语言实现经典多级时间轮定时器

    利用C语言实现经典多级时间轮定时器

    C语言是一门通用计算机编程语言,广泛应用于底层开发,这篇文章主要给大家介绍了关于利用C语言实现经典多级时间轮定时器的相关资料,需要的朋友可以参...

    叨陪鲤5512021-11-25
  • C/C++C++插入排序算法实例详解

    C++插入排序算法实例详解

    这篇文章主要为大家详细介绍了C++插入排序算法实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    tttjp5892021-06-10
  • C/C++C语言循环队列与用队列实现栈问题解析

    C语言循环队列与用队列实现栈问题解析

    循环队列又叫环形队列,是一种特殊的队列。循环队列解决了队列出队时需要将所有数据前移一位的问题,本篇带你一起看看循环队列的问题和怎样用队列...

    _奇奇4282022-11-02
  • C/C++深入探讨Linux静态库与动态库的详解(一看就懂)

    深入探讨Linux静态库与动态库的详解(一看就懂)

    本篇文章是对Linux静态库与动态库进行了详细的分析介绍,需要的朋友参考下...

    C语言教程网3732020-12-08
  • C/C++C语言中操作sqlserver数据库案例教程

    C语言中操作sqlserver数据库案例教程

    这篇文章主要介绍了C语言中操作sqlserver数据库案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    uestclr11852021-12-01
  • C/C++利用C/C++实现较完整贪吃蛇游戏

    利用C/C++实现较完整贪吃蛇游戏

    这篇文章主要为大家详细介绍了利用C/C++实现较完整贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    CoderLC5652021-06-22
  • C/C++C++ 实现静态单链表的实例

    C++ 实现静态单链表的实例

    这篇文章主要介绍了C++ 实现静态单链表的实例的相关资料,需要的朋友可以参考下...

    C++教程网10862021-05-19
  • C/C++C语言中extern详细用法解析

    C语言中extern详细用法解析

    这篇文章主要介绍了C语言中extern详细用法解析,本文讲解的extern也是C语言中的关键词,用来修饰函数声明或变量等,以下就是详细内容,需要的朋友可以参考下...

    weixin_4081995411502021-11-21