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

 更新时间:2022年04月26日 17:19:40   作者:不知名小赖  
这篇文章主要介绍了C语言文件操作详情,主要讨论的是数据文件,通过处理的磁盘上的文件展开主题内容介绍,需要的小伙伴可以参考一下,希望对你的学习有所帮助

前言:

文件操作重要吗?

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

一、文件是什么

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

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

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

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

例如:c:\code\test.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语言文件操作<一>_打开文件_02

五、文件的打开和关闭

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

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

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

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

  • 当前路劲下(相对路径)打开文件
  • 绝对路径打开
//以读的方式打开
//当前路劲下(相对路径)打开文件test.txt
fopen("test.txt", "r");
//绝对路径打开
fopen("E:\\C++file\\file\\test.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语言文件操作<一>_打开文件_03

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

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

相关文章

  • C语言以数据块的形式读写文件实例代码

    C语言以数据块的形式读写文件实例代码

    本文主要介绍C语言中以数据块的形式读写文件,这里提供了实例代码举例说明,有需要的小伙伴可以参考下
    2016-07-07
  • C++修炼之拷贝构造函数

    C++修炼之拷贝构造函数

    这篇文章主要内容是6个默认成员函数之一的拷贝构造函数的认识与学习,让同学们充分理解浅拷贝与深拷贝,感兴趣的小伙伴可以参考阅读
    2023-04-04
  • C语言MultiByteToWideChar和WideCharToMultiByte案例详解

    C语言MultiByteToWideChar和WideCharToMultiByte案例详解

    这篇文章主要介绍了C语言MultiByteToWideChar和WideCharToMultiByte案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++实现简单的图书管理系统

    C++实现简单的图书管理系统

    本文给大家分享的是使用C++实现简单的图书管理系统的代码,本系统采用了面向对象的程序设计方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • C++实现简单扫雷小游戏

    C++实现简单扫雷小游戏

    这篇文章主要为大家详细介绍了C++实现简单扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • c语言与c++基础知识点(必看)

    c语言与c++基础知识点(必看)

    下面小编就为大家带来一篇c语言与c++基础知识点(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • C语言实现影院管理系统

    C语言实现影院管理系统

    这篇文章主要为大家详细介绍了C语言实现影院管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • C++简明讲解类型转换的使用与作用

    C++简明讲解类型转换的使用与作用

    类型转换(type cast),是高级语言的一个基本语法。它被实现为一个特殊的运算符,以小括号内加上类型名来表示,接下来让我们一起来详细了解
    2022-04-04
  • C语言在屏幕上输出杨辉三角

    C语言在屏幕上输出杨辉三角

    这篇文章主要介绍了在屏幕上输出杨辉三角的方法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • C语言计算字符串最后一个单词的长度

    C语言计算字符串最后一个单词的长度

    大家好,本篇文章主要讲的是C语言计算字符串最后一个单词的长度,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论