文件包括两个方面
一个是文件属性 一个是文件内容
(1)文件类型
根据数组的组织形式,数据文件分为文本文件 和二进制文件。
以AscII形式存储的是文本文件,以二进制存储的是二进制文件。
(2)文件指针
创建格式:FILEpf;
一个程序启动时,FILE是打开一个流,文件指针(句柄),任何一个程序默认打开三个流:标准输入,标准输出,标椎错误。分别对应:stdin(键盘),stdout(显示器),stderr(显示器)。
(3)文件的打开和关闭
FILEpf;
pf=fopen(const char filename,const char* mode);
int fclose(FILE*stream);
打开方式如下:
“r” 只读
“w”只写
“a”追加
“r+”读写
“w+”读写
“a+”读写
以上的之后加个b则为二进制打开。
(4)文件的顺序读写
fgetc 读取文件的一个字符
fgets 读取文件的一行字符串
putc 输出文件的一个字符串
puts 输出文件的一行字符串
fread 读自定义的长度
fwrite 写自定义的长度
fsize_t fread( void *buffer, size_t size, size_t count, FILE *stream )
buffer 是读取的数据存放的内存的指针(可以是数组,也可以是新开辟的空间,buffer就是一个索引)
size 是每次读取的字节数
count 是读取次数
stream 是要读取的文件的指针
size_t fwrite(const void * buf, size_t size, size_t count, FILE fp);
(5)文件的随机读写
feek 根据文件指针的位置和偏移量来定位文件指针。
int feek(FILEstream,long int offset,int origin)
范例一:fseek(fp, 0L, SEEK_END);
解释:文件指针定位到文件末尾,偏移0个字节
范例二: fseek(fp,50L,0);或fseek(fp,50L,SEEK_SET);
解释:其作用是将位置指针移到离文件头50个字节处。
ftell 返回文件指针相对于起始位置的偏移量
long int ftell(FILE*stream)
rewind 让文件指针的位置返回的文件的起始位置。
(6)文件结束判定
注意:不能用feof函数的返回值直接来判断文件的是否结束,而是应用于当文件读取结束之后,判断是读取失败结束,还是遇到文件尾结束。
1.文本文件读取是否结束,判断返回值是否为EOF(fgetc)还是NULL(fgets)。
2.二进制文件判断返回值是否要小于实际要读的个数。