C语言学习笔记 Day14(文件管理)

Day14 内容梳理:

目录

Chapter 10  文件操作

10.0 概述

10.1 打开、关闭文件

(1)文件指针

(2)打开文件  fopen()

(3)读取文件  fgetc()

(4)写入文件  fputc()


Chapter 10  文件操作

10.0 概述

文件分为磁盘文件和设备文件。

磁盘文件:指存储在外部介质上的相关数据的有序集合,使用时才调入内存

设备文件:把和主机相连的输入输出设备看作一个个文件。把它们的输入和输出当作是对磁盘文件的读和写。

所有的磁盘文件在本质上都是以字节为单位进行顺序存储的。

磁盘文件在逻辑上被分为文本文件和二进制文件。

文本文件:

基于字符编码的文件。

常见编码有ASCII、YNICODE等等。

一般可使用文本编辑器直接打开。

二进制文件:

基于值编码的文件。

把数据按其在内存中的存储形式原样输出到磁盘上

10.1 打开、关闭文件

(1)文件指针

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

在使用任何文件之前,都必须先打开文件,使用完之后再关闭。

打开和关闭用的都是stdio库:#include<stdio.h>

如果没有关闭文件,则会在程序退出时统一关闭。

(2)打开文件  fopen()

一般将文件指针命名为fp。

打开方式:

FILE* fp = fopen(const char* 文件名, const char* 模式设置);

模式设置可选的参数:

模式设置
r或rb以只读的方式打开文件(不创建文件,若该文件不存在则报错)
w或wb以写的方式打开文件(文件存在,则清空文件;不存在则创建一个文件)
a或ab以追加的方式打开文件,在末尾添加内容(文件不存在则创建一个文件)
r+或rb+以可读、可写的方式打开文件(不创建新文件)
w+或wb+以可读、可写的方式打开文件(文件存在则清空文件;不存在则创建文件)
a+或ab+以添加的方式打开文件并在末尾更改文件;若文件不存在则创建新文件

总而言之:

        带r的都是只读方式,不创建文件。文件若不存在则报错。

        带w的都包括写的方式,不论文件存不存在,清除掉旧的并创建新的

        带a的都是追加/添加,打开文件并在末尾添加内容,若文件不存在则创建新文件。

以下图为例,以只读方式(“r”)打开D盘中名为abc.txt的文件。

若文件打开成功,则fp指针编程文件指针;打开失败则fp = NULL。

需要注意两点:(1)fopen()不太安全,所以要加#define _CRT_SECURE_NO_WARNINGS,而且要加在导入库的代码之前。        (2)一般的路径都是反斜杠\,但是在C语言中,\\才代表反斜杠。单斜杠\一般搭配其他符号使用(比如\n换行)。所以路径操作建议写成正斜杠/,或者双反斜杠\\

文件打开失败有三种情况

①找不到文件

②文件权限不足(读/写/执行)

③已打开的文件数量超过上限(65535个文件)。

因为文件打开失败的几率不小,所以最好加个fp == NULL的条件判断来处理。

(3)读取文件  fgetc()

往新建的abc.txt文件中加了句hello world。

不需要让文件指针++,因为文件中的光标会自行往下读取,只需要创建个指针然后不断让指针等于fgetc(文件指针)即可:

文件用-1作为文件终止符,是因为文件数据以ASCII码(范围是0-127)的形式存储,不可能出现-1,所以可用-1。

另外,可以把代码缩减一下。

由于都是逐字符读取再打印。而逐字符读取中,=的优先级低于判断是否终止的 !=,所以需要用括号括起来(read_ch = fgetc(fp)),再判断是否终止。

(4)写入文件  fputc()

接着用上面写入了hello world的文件abc.txt,右下角是输入的字符,而右侧则是已被更改的abc.txt文件。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值