第一部分—C语言基础篇_10. 文件操作

这篇博客详细介绍了C语言中的文件操作,包括文件的打开和关闭、顺序读写、随机读写、文件状态获取、删除与重命名文件,以及文件缓冲区的概念。讲解了不同类型的文件(文本文件和二进制文件)以及在Windows和Linux平台上的区别。并提供了fopen、fclose、fgetc、fputc、fgets、fputs、fprintf、fscanf、fread、fwrite等函数的使用方法。
摘要由CSDN通过智能技术生成

10.1 概述

10.1.1磁盘文件和设备文件

1.磁盘文件

指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。

2.设备文件

在操作系统中把每一个与主机相连的输入、输出设备看作是一个文件,把它们的输入、输出等同于对磁盘文件的读和写。

 10.1.2 磁盘文件的分类

 计算机的存储在物理上是二进制的,所以物理上所有的磁盘文件本质上都是一样的:以字节为单位进行顺序存储。

 

从用户或者操作系统使用的角度(逻辑上)把文件分为:

  1. 文本文件:基于字符编码的文件  
  2. 二进制文件:基于值编码的文件

10.1.3 文本文件和二进制文件

 

1)文本文件

  1. 基于字符编码,常见编码有ASCII、UNICODE等
  2. 一般可以使用文本编辑器直接打开

2)二进制文件

  1. 基于值编码,自己根据具体应用,指定某个值是什么意思
  2. 把内存中的数据按其在内存中的存储形式原样输出到磁盘上

10.2 文件的打开和关闭

10.2.1 文件指针

 在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。

typedef struct

{

short                  level; //缓冲区"满"或者"空"的程度

unsigned           flags; //文件状态标志

char                   fd; //文件描述符

unsigned char   hold; //如无缓冲区不读取字符

short                  bsize; //缓冲区的大小

unsigned char   *buffer;//数据缓冲区的位置

unsigned            ar;  //指针,当前的指向

unsigned            istemp; //临时文件,指示器

short                   token; //用于有效性的检查

}FILE;

FILE是系统使用typedef定义出来的有关文件信息的一种结构体类型结构中含有文件名、文件状态和文件当前位置等信息

声明FILE结构体类型的信息包含在头文件“stdio.h”中,一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量。通过文件指针就可对它所指的文件进行各种操作。

 C语言中有三个特殊的文件指针由系统默认打开,用户无需定义即可直接使用:

  1. stdin: 标准输入,默认为当前终端(键盘),我们使用的scanf、getchar函数默认从此终端获得数据。
  2. stdout:标准输出,默认为当前终端(屏幕),我们使用的printf、puts函数默认输出信息到此终端。
  3. stderr:标准出错,默认为当前终端(屏幕),我们使用的perror函数默认输出信息到此终端。

 

10.2.2 文件的打开

任何文件使用之前必须打开:

#include <stdio.h>

FILE * fopen(const char * filename, const char * mode);

功能:      打开文件

参数:

filename:需要打开的文件名,根据需要加上路径

mode:     打开文件的模式设置

返回值:

成功:       文件指针

失败:       NULL

第一个参数的几种形式:

FILE *fp_passwd = NULL;

//相对路径:

//打开当前目录passdw文件:源文件(源程序)所在目录

FILE *fp_passwd = fopen("passwd.txt", "r");

//打开当前目录(test)下passwd.txt文件

fp_passwd = fopen(". / test / passwd.txt", "r");

//打开当前目录上一级目录(相对当前目录)passwd.txt文件

fp_passwd = fopen(".. / passwd.txt", "r");

//绝对路径:

//打开C盘test目录下一个叫passwd.txt文件

fp_passwd = fopen("c:/test/passwd.txt","r");

第二个参数的几种形式(打开文件的方式):

打开模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值