zoukankan      html  css  js  c++  java
  • C语言文件操作 (一)

    来源:C语言文件操作 (freecplus.net)

    C 语言对文件进行操作之前必须先“打开”文件,操作(读和写)完成后,再“关闭”文件。

    打开文件 --> 操作文件(文件读写)--> 关闭文件

    1、文件操作

    操作文件的时候,C语言为文件分配一个信息区,该信息区包含文件描述信息,缓冲区位置、缓冲区大小、文件读写到的位置等基本信息,这些信息用一个结构体来存放(struct_IO_FILE),这个结构体有一个别名FILE(typedef struct_IO_FILE FILE), FILE结构体和对文件操作的库函数在stdio.h头文件中声明。

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

    1.1 打开文件的函数

    fopen函数中会动态分配一个FILE结构体大小的内存空间,并把FILE结构体内存的地址作为函数的返回值,程序中用FILE结构体指针存放这个地址。

    fopen来创建一个新的文件或者打开一个已存的文件,调用fopen函数成功后,返回一个文件指针( FILE *),函数的原型如下:

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

    参数filename 是字符串,表示需要打开的文件名,可以包含目录名,如果不包含路径就表示程序运行的当前目录。实际开发中,采用文件的全路径。

    参数mode也是字符串,表示打开文件的方式(模式)。

    返回值:打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。故需定义 FILE 类型的指针变量,保存该函数的返回值。可根据该函数的返回值判断文件打开是否成功。

    方式

    含 义

    说 明

    r

    只读

    文件必须存在,否则打开失败。

    w

    只写

    如果文件存在,则清除原文件内容;如果文件不存在,则新建文件。

    a

    追加只写

    如果文件存在,则打开文件,如果文件不存在,则新建文件。

    r+

    读写

    文件必须存在。在只读 r 的基础上加 '+' 表示增加可写的功能。

    w+

    读写

    在只写w的方式上增加可读的功能。

    a+

    读写

    在追加只写a的方式上增加可读的功能。

    1.2 关闭文件的函数

    fclose函数除了关闭文件,还会释放FILE结构体占用的内存空间。

    函数的原型:

    int fclose(FILE *fp);

    fp为fopen函数返回的文件指针。

    /*
     * 程序名:12-02.c,此程序用于文件打开和关闭简单操作 
    */
    #include <stdio.h>
    int main(){
    	FILE *fp = 0; //定义存放文件指针的变量 
    	fp = fopen("D:\学习\111.txt", "r"); 
    	if ( fp == 0 )
    	{
    		printf("打开D:学习111.txt失败;
    ");
    		return -1;
    	}
    	printf("D:学习111.txt fp =%p 
    ", fp);//%p是打印地址的,打印文件的地址
    	fclose(fp) ;
    }
    

    在windows 里面写路径时候用用两个反斜杠"//"或者正斜杠“/”来表示路径,主要不能使用一个反斜杠""

    windows是两个反斜杠“\”,也可以使用正斜杠“/”

    linux 用正斜杠“/”

    注意事情:

    1)调用fopen打开文件的时候,一定要判断返回值,如果文件不存在、或没有权限、或磁盘空间满了,都有可能造成打开文件失败。

    2)文件指针是调用fopen的时候,系统动态分配了内存空间,函数返回或程序退出之前,必须用fclose关闭文件指针,释放内存,否则后果严重。

    3)如果文件指针是空指针或野指针,用fclose关闭它相当于操作空指针或野指针,后果严重。

  • 相关阅读:
    MT7601 AP模式移植
    dhcp server 移植记录
    MT7601 WG209模块驱动移植,并连接路由器
    git 忽略文件
    关于中文--Unicode之间互相转换流程的说明
    将文字拆成拼音得到首字母(返回多音字)
    Javascript 汉字转首字母的拼音 js文件(支持多音字的选择)
    如何使用netstat –ano|findstr “port”命令?
    notepad++如何修改主题
    Notepad++ 更换主题
  • 原文地址:https://www.cnblogs.com/y15821933792/p/14077183.html
Copyright © 2011-2022 走看看