首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C语言学习12.文件和IO(2)

C语言学习12.文件和IO(2)

文件的打开

库函数 fopen()
FILE* fopen(char* filename,char* mode);
Mode 为打开方式
一种是类型:t文本文件(默认),b,binary,二进制,可以附加在上面的打开方式后面(比如wb),表示以二进制模式打开,默认是以文本模式打开,在Unix和Linux平台,这两者没有区别。
另一种是操作类型:

    r读取,如果文件不存在,打开失败
    w写入,如果文件不存在,就创建文件,存在就清空文件内容
    a追加数据,append,即在文件末尾写入数据,如果文件不存在,就创建新文件,否则在文件末尾追加数据
    a+对文件可读可写,打开或建立用于更新数据的文件,数据追加到文件尾。
    w+:读写,文件不存在,就创建新文件,存在就清空内容。
    r+:读写(更新数据),如果文件不存在,打开失败

每当打开一个文件进行写时,系统会自动创建一个文件输出缓冲区,在执行写操作时数据并不是立即被写到文件中去,而是首先进入这个缓冲区,等到该缓冲区满了或遇到特殊字符(‘\n’),系统才会将该缓冲区中的数据一次性地写入文件中。
如果希望立即刷新文件输出缓冲区,可以调用fflush这个函数,参数为对应的文件指针。
位置指针:

读写的位置,即每次进行读写操作的位置,打开文件后位置指针初始指向文件开头(文件中第0字节处),当进行读写操作后位置会向后(文件末尾方向)移动相应的大小。
调用fseek库函数可以人为地改变位置指针的位置。
Fseek(fp,0,SEEK_SET);
Fseek函数的第二个参数为偏移量,第三个参数为偏移量的参考位置,参考位置有三种情况:

    SEEK_SET:文件开头
    SEEK_END:文件末尾
    SEEK_CUR: 当前位置

Fprintf函数功能:格式化输出到文件,即写入数据到文件

判断是否到了文件末尾调用feof库函数
FILE* fp;fp=open(“c:\Exam\01.txt”);
因为‘\’是转义字符的起始符号,所以要写成‘\’
注意:

    读文件要确认文件是否存在,并把读/写当前位置置于文件开头。写文件则检查原来是否有同名文件。有则删除然后新建写入数据,没有则把读/写置于文件开头,从文件开头写入数据。
    操作字符都是ASCLL的规定,不是所有C语言系统都能使用,
    成功返回一个FILE结构体类型的指针;执行失败返回NULL。
    一般将返回的指针赋值给一个FILE类型的指针变量,在后续的操作中就可以使用这个指针变量对这个文件进行操作,如:

    FILE* fp;
    If(fp=open(“c:\\Exam\\01.txt”,”r”)==NULL)
    {
            printf(“connot open this file:\n”);
    }

如果可以打开,文件指针fp指向这个打开的文件,这里exit(0)表示正常退出,exit(1)表示异常退出。
返回列表