黑马程序员——c语言基础:文件管理

本文详细介绍了C语言中的文件管理,包括文件的基本概念、类型、操作步骤及原理。通过实例演示了文件的打开、读写、关闭过程,讲解了ASCII码和二进制文件的区别,以及字符、字符串、数据块的读写函数。同时,文章还涵盖了文件操作中的缓冲区、输入输出流、文件指针和文件使用方式,如读写模式(r, w, a等)。此外,还讨论了文件的随机读写、定位和错误检测等功能,帮助读者全面掌握C语言中的文件管理技巧。" 100102241,5621586,Linux系统网络配置:IP与MAC地址修改指南,"['Linux', '网络配置', 'IP', 'MAC', '命令行工具']
摘要由CSDN通过智能技术生成

1.文件的基本概念和文件操作


 文件:文件指存储在外部介质上数据的集合,这个数据集有一个名称,叫做文件名。

 

 文件的分类:

    1)从用户的角度看,文件可分为普通文件和设备文件两种。

    2)从文件的编码方式来看,文件可分为ASCII码文件和二进制文件两种。

        ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。

        二进制文件是按二进制的编码方式来存放文件的。

 

 文件操作的步骤

    1)引入头文件(stdio.h

    2)定义文件指针

        FILE *fp = NULL;

    3)打开文件

        fopen(文件名,操作方式); // 如果打开成功,返回文件的首地址,如果打开失败,返回NULL

    4)文件读写

        对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:

        字符读写函数:fgetcfputc

        字符串读写函数:fgersfputs

        数据块读写函数:freadfwrite

        格式化读写函数:fscanffprintf

    5)关闭文件

        fclose(文件指针);

 

 文件操作的原理

    1)文件缓冲区:

        ANSIC标准采用缓冲文件系统出来数据文件,所谓缓冲文件系统是指系统自动地在内存区为程序中每一个正在使用的文件开辟一个文件缓冲区。

        从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘区。

        如果从磁盘向计算机读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量)。

    2)输入输出流

        输入输出是数据传送的过程,数据像流水一样从一处流向另一处,因此常将输入输出形象地称为流(stream,即数据流。流表示了信息从源到目的端的流动。

 

 C语言文件指针:

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

    定义说明文件指针的一般形式为:

        FILE *指针变量标识符; // 注意FILE应为大写

    例如:FILE *fp; // 表示fp是指向FILE结构的指针变量

 

 文件使用方式

    r  打开一个已存在的文件,准备从文件中读取数据。不能向文件写数据

    w  创建一个新文件,准备向文件写入数据。不能从文件中读取数据。如果文件已经存在,这个文件将被覆盖(先删后建)

    a  打开一个已存在的文件,准备在文件尾部追加数据。不能从文件中读取数据。如果文件不存在,则创建这个文件准备写入数据

    r+ 打开一个已存在的文件,准备读写。既可以读取数据,也可以写入数据

    w+ 创建一个新文件,准备读写。如果文件已经存在,则覆盖原文件

    a+ 等价于a,但可以从文件中读数据

    t  打开一个文本文件

    b  打开一个二进制文件

 

文件基本操作示例:


#include <stdio.h>


int main(int argc, const char * argv[]) {

    // 定义文件指针

    FILE *fp = NULL; // FILE 结构体类型的指针

    

    // 打开文件

    fp = fopen("a.txt", "r"); // r是操作方式,会到Products文件夹查找a.txt文件

    

    // fopen成功,返回文件的首地址,

    // fopen失败,返回NULL

    // 一般我们会做一个判断,当文件打开成功,我们再读写文件

    if (fp != NULL) {

        // 操作文件

        printf("文件打开成功!");

    } else {

        //给用户一个提示

        printf("文件打开失败!按任意键退出。\n");

        //按任意键退出

        getchar(); // 要求从键盘接收一个字符

        //退出

        exit(1); // 非正常退出

    }

    return 0;

}



 2.字符的读写函数fputc和fgetc

    fputc() 写入一个字符到文件中

    fgetc() 读取一个字符到变量中


fputc()的使用:把'x'写入到fputc.txt


#include <stdio.h>


int main(int argc, const char * argv[]) {

    // 1.定义文件指针

    FILE *fp = NULL;

    

    // 2.w方式打开fputc.txt

    fp = fopen("fputc.txt", "w");

    

    // 3.判断是否打开成功

    if (fp != NULL) {

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值