C语言的文件操作

LogicStriderX
• 阅读 578

文件分类

  • 程序文件:源程序文件(.c文件)、目标文件(.obj文件)、可执行文件(.exe文件)
  • 数据文件:程序运行时读写的数据。

文件的打开和关闭

文件类型指针

  • 文件在被打开时,都会在内存中开辟一个相应的文件信息区,用来存放被打开文件的相关信息(文件名、文件大小、文件位置等)。这些信息是保存在一个结构体中的,该结构体的声明就是FILE类型。

    FILE *fptr;   //文件指针
     fptr = fopen("runoob.txt", "r"))  //fopen打开一个文件,返回一个 FILE 指针
     //fptr 现在就指向 runoob.txt文件的文件信息区。

文件的打开和关闭

  • 在打开文件时,都会返回一个FILE* 的指针变量指向该文件,这样就建立了指针和文件的关系。
  • 注意:打开文件后,必须关闭文件,并且将定义的文件指针赋值为NULL。
  • ANSIC规定:使用 fopen 函数来打开文件,使用 fclose 函数来关闭文件
FILE *fopen(const char *filename, const char *mode)   //打开文件函数
//filename:字符串,表示要打开的文件名称
//mode    :字符串,表示文件的访问模式,
//返回值   :打开成功返回一个 FILE 指针。否则返回 NULL

int fclose(FILE *stream)   //关闭文件函数
//如果成功关闭,则该方法返回零。如果失败,则返回 EOF。
  • mode 文件访问模式可选的值:
    C语言的文件操作

文件的顺序读写

  • fgetc :字符读取函数(适用于所有流)
  • fputc :字符写入函数(写入单个字符)
  • fgets :文本行读取函数(从文件中读取一整行数据)
  • fputs :文本行写入函数
  • fscanf :格式化读取函数(从文件中读取数据)
  • fprintf :格式化写入函数(向文件中写入数据)
  • fread :二进制读取(适用于文件)
  • fwrite :二进制写入(适用于文件)

scanf/fscanf/sscanf和printf/fprintf/sprintf区别

  • scanf :格式化的输入函数(输入就是读取,程序向控制台读取数据)
  • printf :格式化的输出函数(输出就是写入,程序向控制台写入数据)
  • fscanf :针对所有输入流的格式化输入函数
  • fprintf :针对所有输出流的格式化输出函数
  • sscanf :把一个字符串转换为格式化的数据
  • sprinft :把一个格式化数据转换成字符串

指定文件的位置读写

fseek重定位指针

  • 根据文件指针的位置(whence)和偏移量(offset)来重定位文件指针(stream)
int fseek(FILE *stream, long int offset, int whence)
  • stream : 这是指向 FILE 对象的指针。
  • offset : 这是相对 whence 的偏移量,以字节为单位。
  • whence : 指定文件指针的初始位置

    • SEEK_SET :文件的开头
    • SEEK_CUR :文件指针的当前位置
    • SEEK_END :文件的末尾
#include <stdio.h>

int main ()
{
   FILE *fp;
   fp = fopen("file.txt","w+");  //创建一个用于写入的空文件
   fputs("This is runoob.com", fp);  //向文件中写入内容
   fseek( fp, 7, SEEK_SET );         //重定位文件指针
   fputs(" C Programming Langauge", fp); //向重定位后的位置写入数据
   fclose(fp); //关闭文件
   
   return(0);
}
//运行结果:This is C Programming Langauge

ftell查找当前文件指针位置

long int ftell(FILE *stream)
  • stream :当前文件指针
  • 返回值 :返回当前文件指针相当于文件起始位置的偏移量

rewind设置指针位置为文件起始位置

void rewind(FILE *stream)
  • 函数作用:使文件指针stream指向文件的起始位置。

被错误使用的feof函数

  • 这个函数不能用来判断文件是否读取结束。
  • 而是用来在文件读取结束后,判断是哪种方式导致的文件读取结束(是文件读取失败还是文遇到文件结尾而结束的)

文件缓冲区

  • 系统会自动在内存中为每一个正在使用的文件开辟一块文件缓冲区(是在内存中开辟的)
  • 从程序向磁盘写入数据时,数据会先传输到缓冲区,当缓冲区填充满后,再一起传输到硬盘中。
  • 从硬盘读取数据到程序时,数据也会先传输到缓冲区,当缓冲区填充满后,再一起传输到内存中。
  • fclose在关闭文件时,也会将缓冲区剩余的数据放到硬盘中。
点赞
收藏
评论区
推荐文章
半臻 半臻
4年前
Python基础8——文件操作
16文件操作16.1文件操作的基本概念文件操作的步骤1.打开文件2.读、写文件3.关闭文件open函数,创建一个file对象,默认是以只读的方式打开read方法:一次性读取文件的所有内容write方法:将指定内容写入文件close方法:关闭文件file对象的属性flie.name文件的名称file.mode文件的访问模式file.closed
Wesley13 Wesley13
4年前
java 用文件对话框打开文件
//文件的打开importjava.awt.FileDialog;importjava.awt.event.;importjava.io.;importjava.io.File;importjava.io.FileReader;publicclassFileOpe
Irene181 Irene181
4年前
一篇文章带你搞懂Python的文件读写
一、什么是文件?文件就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。二、文件如何的打开?Python内置了一个open()方法,可以对文件进行读写操作。使用open()方法操作文件就像把大象塞进冰箱一样,可以分三步走,一是打开文件,二是操作文件,三是关闭文件。open语法open()方法的返回值是一个file对
Easter79 Easter79
4年前
sublime使用技巧
快捷键功能ctrlshiftn打开新Sublimectrlshiftw关闭Sublime,关闭所有打开文件ctrlshiftt重新打开最近关闭文件ctrln新建文件ctrls保存ctrlshifts另存为ctrlf4关闭文件ctrlw关闭ctrlk,c
Chase620 Chase620
4年前
.c文件和.h文件的关系
最近在做一个稍微有些复杂的项目。涉及到的函数、结构体、变量等比较多。通常,我编写c/c项目的方式是,有一个main.c文件,该文件的main函数作为接口,调用其他函数。所有其他函数按功能,分别放在不同的.h文件中,这样的方式在编译和运行上肯定是没有什么
CuterCorley CuterCorley
4年前
C语言入门系列之11.文件和文件操作
一、C文件概述1.基本概念文件是指一组相关数据的有序集合,这个数据集有一个名称,叫做文件名。我们在前面的已经使用到了很多文件,例如源程序文件、目标文件、可执行文件、库文件(头文件)等。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来。操作系统是以文件为单位对数据进行管理的,示意如下:2.文件分类从不同
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
LINUX打开文件
<htmlxmlns"http://www.w3.org/1999/xhtml"<head<stylebody,table{fontfamily:微软雅黑;fontsize:10pt}table{bordercollapse:collapse;border:solidgray;borderwidth:2px0
Stella981 Stella981
4年前
Linux file 命令
file 命令在Linux中用来识别文件类型,也可用来辨别一些文件的编码格式。它通过查看文件头部信息来获取文件类型。命令格式file参数文件地址命令参数_\b_列出文件辨识结果时,不显示文件名称。_\c_详细显示指令执行过
Stella981 Stella981
4年前
Linux的文件描述符
(1).文件描述符的定义  文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符;文件描述符是一个简单的非负整数,用以表明每个被进程打开的文件。程序刚刚启动时,第一个打开的文件是0,第二个是1,以此类推。也可以理解为文件的身份ID。  用户通过操作系统处理信息的过程中,使用的交互设
Stella981 Stella981
4年前
Python之文件处理
Python之文件处理不同模式打开文件的完全列表:模式描述r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。r打开一个文件用于读写。文件指针将会放在文件的开头。r
LogicStriderX
LogicStriderX
Lv1
夜闻归雁生乡思,病入新年感物华。
文章
3
粉丝
0
获赞
0