C语言文件及其基本操作


前言

文件是当今计算机系统不可或缺的部分。文件用于存储程序、文档、数据、书信、表格、图形、照片、视频和许多其他种类的信息。作为程序员,必须会编写创建文件和从文件读写数据的程序


数据流

首先我们了解一下数据流的概念,就C程序而言,从程序移进,移出字节,这种字节流就叫做流。程序与数据的交互是以流的形式进行的。进行C语言文件的读写时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。

文件

文件是指存放在外部在储介质(可以是磁盘、光盘、磁带等)上的数据集合。操作系统对外部介质上的数据是以文件形式进行管理的。
当打开一个文件或者创建一个新文件时,一个数据流和一个外部文件(也可能是一个物理设备)相关联。为标识一个文件,每个文件都必须有一个文件名作为访问文件的标志,其一般结构

    文件名.扩展名
通常情况下应该包括盘符名、路径、主文件名和文件扩展名4部分信息

程序在内存运行的过程中与外存(外部存储介质)交互主要是通过以下两种方法:

  1. 文件为单位将数据写到外存中。
  2. 从外存中根据文件名读取文件中的数据。

也就是说,要想读取外部存储介质中的数据,必须先按照文件名找到相应的文件,然后从文件中读取数据;要想将数据存放到外部存储介质中,首先要在外部介质上建立一个文件,然后向该文件中写入数据。

C语言支持的是流式文件,即前面提到的数据流,它把文件看作一个字节序列,以字节为单位进行访问,没有记录的界限,即数据的输入和输出的开始和结束仅受程序控制,而不受物理符号(如回车换行符)的控制

文件操作

文件类型的指针

typedef struct{
    
    
	short level;         //缓冲区“满”或“空”的程度
	unsigned flags;      //文件状态标志
	char fd;             //文件描述符
	unsigned char hold;  //如无缓冲区则不读取字符
	short bsize;         //缓冲区的大小
	unsigned char *baffer; //数据缓冲区的读写位置
	unsigned char *curp; //指针指向的当前文件的读写位置
	unsigned istemp;     //临时文件,指示器
	short token;         //用于有效性检查
}FILE;

在使用一个数据文件时,只需要预先包含stdio.h头文件,然后定义一个该结构体类型的指针,而不必关心FILE结构的细节。

FILE *fp;//直接定义即可

文件操作的库函数

  • 文件的打开
    fopen():打开文件
  • 文件的关闭
    fclose():关闭文件
  • 文件的读写
    fgetc():读取一个字符
    fputc():写入一个字符
    fgets():读取一个字符串
    fputs():写入一个字符串
    fprintf():写入格式化数据
    fscanf():格式化读取数据
    fread():读取数据
    fwrite():写入数据
  • 文件状态检查
    feof():文件是否结束
    ferror():文件读/写是否出错
    clearerr():清除文件错误标志
    ftell():文件指针的当前位置
  • 文件指针定位
    rewind():把文件指针移到开始处fseek():重定位文件指针

1.打开文件

函数原型

FILE *fopen(char *filename,char *mode);
//filename:文件名
//mode:访问方式

功能:使用mode模式打开指定的filename文件。如打开文件成功,则返回一个FILE类型的指针;如打开文件失败,则返回NULL。

文件使用方式 意义
“r” 只读打开一个文本文件,只允许读数据
“w” 只写打开或建立一个文本文件,只允许写数据
“a” 追加打开一个文本文件,并在文件末尾写数据
“rb” 只读打开一个二进制文件,只允许读数据
“wb” 只写打开或建立一个二进制文件,只允许写数据
“ab” 追加打开一个二进制文件,并在文件末尾写数据
“r+” 读写打开一个文本文件,允许读和写
“w+” 读写打开或建立一个文本文件,允许读和写
“a+” 读写打开一个文本文件,允许读,或在文件末追加数据
“rb+” 读写打开一个二进制文件,允许读和写
“wb+” 读写打开或建立一个二进制文件,允许读和写
“ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据

以只读方式打开文件的两种方法:

方法1:
FILE *fp;
fp=fopen("E:\\code\\1.txt", "r");
方法2:
FILE *fp;
fp=fopen("E:/code/1.txt","r");

2.关闭文件

函数原型

int fclose(FILE *fp);

功能:将文件指针fp 所指的文件关闭。若返回0,则表示关闭成功;若返回非0值,则表示有错误发生。
在程序中,一个文件使用完毕后,若采用读取模式打开文件,可以不必做关闭文件的操作;但若采用写入模式,一定要使用fclose()函数关闭文件,否则最后放在缓冲区的数据无法写回文件,从而发生数据遗失的情况。
文件打开使用完后,不管是以何种方式读写文件,都养成关闭文件的好习惯。

3.单字符读写文件

单字符读写函数
字符读写函数是以字符(字节)为单位的读写函数。每次可从文件读出或向文件写入一个字符。

  1. 读单字符函数fgetc()
    函数原型
  int fgetc(FILE *fp);
  
  //其意义是从fp所指的文件中读取一个字符并送入ch中。
  FILE *fp;
  ch=fgetc(fp);  

功能:读取文件指针fp目前所指文件位置中的字符,读取完毕,文件指针自动往下移一个字符位置,若文件指针已经到文件结尾,返回-1。

  1. 写单字符函数fputc()
    函数原型
int fputc(char ch,FILE *fp);

//其意义是把字符a写入fp所指向的文件中
FILE *fp;
fputc('a',fp);

功能:把字符ch写入文件指针fp所指向文件的位置,成功时返回字符的ASCII码,并且文件内部位置指针向后移动一个字节;失败时返回EOF(在stdio.h中,符号常量EOF的值等于-1)。

剩下的看这里哦,嘿嘿嘿!
C语言详细文件操作

猜你喜欢

转载自blog.csdn.net/The_onion/article/details/121629077
今日推荐