七、文件

来源:互联网 发布:淘宝图片一键搬家 编辑:程序博客网 时间:2024/05/05 23:58

七、文件(使用 Python 更好用)


1. 文件概述

文件是存储在外存储器(如,硬盘)上用文件名标识的数据的集合,它可以永久地存储数据。一个文件有唯一的文件标识,包括文件路径、主文件名、文件后缀(扩展名)

  • C/C++文件
    • C语言文件处理的关键是定义一个文件指针,通过该指针对文件的打开、读写、关闭等进行操作。 按照数据的组织形式,C语言文件分为文本文件(又称ASCII码文件,一个字节代表一个字符,所以可以直接编辑和显示)和二进制文件
    • C++语言的文件处理则是在定义一个输入输出流类对象的基础上,通过封装在输入输出流类内部的成员函数实现对文件的操作。
    • 一般来说,处理数据文件的程序由3个步骤组成:打开文件、进行读/写操作、关闭文件
    • C语言没有自己的输入输出语句,对文件的处理是通过调用标准的输入/输出库函数实现的。
  • 文件指针
    • FILE *文件指针标识符; eg:FILE *fp1, *fp2;
    • 定义两个文件指针fp1和fp2,再通过fopen函数使得他们能够分别指向各自的文件缓冲区,程序就可以利用他们来访问文件。
  • 保存数据到文件
    • fopen:打开文件
      • FILE* fopen(const char* filename, const char* mode); // 返回一个文件指针
      • eg: const char* filename = "E:\\hello.txt"; FILE* fp = fopen(filename, "wb"); //注意:fp 要先声明其类型(文件指针类型), 然后再把返回的文件指针赋值给fp
    • fwrite:写入数据
      • size_t fwrite(const void* buf, size_t size, size_t count, FILE *stream); // 返回字节数
      • buf:要写入数据的首地址;size:总是传1;count:要传入的字节数;stream:前面fopen的返回值
      • eg: char buf[] = "hello"; fwrite(buf, 1, 5, fp);
    • fclose :关闭文件
      • int fclose(FILE* stream); // stream 就是前面fopen 的返回值
      • eg: fclose(fp);

2. 多文件操作

  • extern 的作用: 告诉编译器,在某个cpp文件中,存在这么一个函数/全局变量,但全局变量的声明语句是不能加初始值的。
  • extern 存在的意义:使程序模块化,可以使得多人协作变得更简单,不同的人编辑不同的cpp文件。
  • 头文件里一般包含以下内容:#include "head.h" // #include 称为“预处理命令”
    • 公用的类型定义:如果一个类型要在多个cpp文件中使用,可以放在头文件里。
    • extern 函数/变量声明
    • 嵌入包含其他头文件
  • 头文件与源文件的分离
// 类型定义写在头文件Object.h里// 不一定要把所有函数定义都拿出来,也可以只拿一部分出来class Object {public:   int x;   void Test();                    // 成员函数的声明};// 函数实现写在源文件Object.cpp里void Object::Test()                // 成员函数写在外边,加上类名限定(Object::){    printf("x is %d \n", x);       // 仍然可以省略this->}
0 0