文件的打开
库函数 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)表示异常退出。 |