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

    1、首先定义个文件指针变量

    FILE *fp;

    2、接着,使用fopen函数打开一个文件,一种指定的打开模式

    fp=fopen(fileName, openMode);

    当然,在使用完文件后一定要关闭文件,fclose();

    其中,文件名可以是相对地址,或者绝对地址,但是需要注意的是,地址中的分隔符反斜杠,需要两个而不是一个。

    文件的打开模式有以下几种:

    使用文件方式
    文件使用方式 含义
    "r"(只读) 为输入打开一个已存在的文本文件
    "w"(只写) 为输出打开一个文本文件
    "a" 向文本文件尾添加数据
    "rb" 为输入打开一个二进制文件
    "wb" 为输出打开一个二进制文件
    "ab" 向二进制文件尾添加数据
    "r+" 为读写打开一个文本文件
    "w+" 为读写建立一个新的文本文件
    "a+" 为读写打开一个文本文件
    "rb+" 为读写打开一个二进制文件
    "wb+" 为读写建立一个新的二进制文件
    "ab+" 为读写打开一个二进制文件

    (1)不能用r打开一个不存在的文件,且打开之后只能读

    (2)用w打开,如果打开文件不存在,则建立一个指定命名的文件,如果已经存在,则打开时将其删除,然后重新建立一个,打开之后只能写

    (3)如果希望向文件末尾添加数据,则可以使用a方式,它只能打开已存在文件,打开后文件指针指向文件结尾

    (4)用r+、w+、a+方式打开的文件既可以用来输入数据,也可以用来输出数据。用r+打开的文件应该已经存在,否则出错,用w+打开则会新建立一个文件,用a+打开,原文件不删除,文件指针移动到文件尾

    (5)打开方式中带有b的是用来以二进制方式方式打开文件的

    3、文件格式化函数

    fprintf(文件指针, 格式化字符串, 输出列表);

    fscanf(文件指针, 格式化字符串, 输入列表);

    4、向文件读写一组数据

    fread(buffer, size, count, fp);

    fwrite(buffer, size, count, fp);

    buffer是一个指针,对fread来说,它是读入数据的存放地址,对fwrite来说,它是输出数据的地址

    size是要读写的字节数,即单个数据占得字节数,int是4,char是1

    count是要读取或者写入多少个size字节的数据项

    fp是文件指针

    5、文件的随机读写

    (1)用rewind()函数使文件指针指向文件头

    (2)用fseek() 实现改变文件指针的指向位置

    fseek(文件指针, 偏移量, 起始点);

    起始点用0、1、2代替,分别代表文件开始、当前位置、文件尾

    偏移量是以起始点为基点的偏移

    (3)ftell()函数判断文件指针的指向位置

    返回值是相对于文件头的偏移量

    6、个人总结

    文件是计算机内存中二进制表示数据在外村上的存储形式,在C语言中分为二进制文件和文本文件

    (1)二进制文件存储的数据和内存中的数据一样,是内存中数据的原样输出,而且windows是小端模式存储数据的,所以这点也要注意

    (2)文本文件是以可视的方式将内存中的二进制数据存储在外存上的,它使用了ASCII编码进行存储,有一点需要注意,在以文本写入文件时,遇到换行,将自动将在换行前加入回车然后存储,在以文本文件读取数据时,遇到回车、换行连在一起时,会自动将回车和换行读取为换行

    所以,在操作文件时必须以一致的方式来进行读写文件,否则将会出错。

    常用文件操作函数
    分类 函数名 功能
    打开文件 fopen() 打开文件
    关闭文件 fclose() 关闭文件
    文件定位 fseek() 改变文件指针位置
    rewind() 使文件指针指向文件头
    ftell() 得到文件指针当前位置
    文件读写 fgetc(), getc() 从指定文件读取一个字符
    fputc(), putc() 把字符输出到指定文件
    fget() 从指定文件读取字符串
    fputs() 把字符串输出到指定文件
    fread() 从指定文件读取数据块
    fwrite() 把数据块写入到文件
    fscanf() 格式化读取文件数据
    fprintf() 格式化写入文件数据
    文件状态 feof() 若到文件末尾,函数值为真
    ferror() 如果文件操作出错,函数值为真
    clearerr() 使ferror、feof函数值置0
         
  • 相关阅读:
    反转链表——临时变量的妙用
    C++指针学习(2)
    统计英文文本中的词频
    灵活的C++
    编程之美 NIM(1)扩展问题
    深度探索C++对象模型读书笔记(1)
    irrlicht1.7.0(2):基础接口
    关于裁剪空间与投影变换矩阵的推导
    irrlicht1.7.0(1):irrTypes.h
    【转】每天拿两个小时来浪费(文/王路)
  • 原文地址:https://www.cnblogs.com/lit10050528/p/3476028.html
Copyright © 2011-2022 走看看