首页 > 代码库 > <学习笔记>文件操作篇

<学习笔记>文件操作篇

文件操作用到的函数:

#include <stdio.h>

fopen(FILE* fp):

  1. 文件打开函数;
  2. 1、打开成功返回当前文件所处的地址值;2、打开失败返回一个空指针”NULL”;
  3. 常用方法:if((fp=fopen(“file_name”,”mode”))==NULL)printf(“can not open this file!”);常用此方法打开文件。

mode代表含义:

r

为读打开一个文本文件,若不存在则返回”NULL”

w

为写打开一个文本文件,若不存在则新建该文件

a

为追加打开一个文本文件

rb

同‘r’,但打开为二进制文件

wb

同’w‘,但打开为二进制文件

ab

同‘a‘,但打开为二进制文件

r+

同’r‘,但指针指向文件开始

w+

为读写新建一个文本文件

a+

同‘a‘,但指针指向文件最后

rb+

二进制文件的区别

wb+

二进制文件的区别

ab+

二进制文件的区别

备注:用带’r‘的方式打开文件时,若文件不存在则返回“NULL”指针。

fclose(FILE* fp):

  1. 文件关闭函数;
  2. 关闭成功则返回0,关闭失败返回一个非零值;
  3. 该函数的作用:1>使文件指针fp与文件脱离;2>刷新文件输入/输出缓冲区。

fseek(FILE* fp,int num,from_where):

用于操作已打开文件的位置指针;

一般用于对二进制文件进行操作。操作成功则返回0,失败返回非零;

函数执行成功的结果:文件位置指针从“from_where”处左移或右移“num”个位置。

from_where的含义:

符号常数 数值 含义
SEEK_SET 0 文件的起始位置
SRRK_CUR 1 文件指针的现行位置
SEEK_END 2 文件末尾

 

int fread(void *buf , int size , int count , FILE* fp):

从当前位置读取count个字段,每个字段长度为size个字节,并把它们存放到buf指针所指的缓冲区中。

int fwrite(void *buf , int size , int count , FILE* fp):

把buf指针所指的缓冲器中,长度为size个字节的count个字段写到fp所指的文件中去。

long ftell(FILE*fp):

返回文件位置指示器的当前值,这个值是指示器从文件开始算起的字节数,返回的数为长整型数,当返回-1时,表明出现错误

int feof(FILE* fp):

判断文件位置指针是否至于文件末尾,若是则返回0,否返回非0。在二进制文件中作用最明显。

int rewind(FILE* fp):

将文件位置指示器移到文件的起点处,成功时返回0,否则返回非0值。

int fflush(FILE *fp):

该函数将输出缓冲区的内容写入文件中,而将输入缓冲区的内容清除掉。

int ferror(FILE* fp):

若上一次文件操作未出错,返回0,否则返回非0。

void clearerr(FILE* fp):

清除一次文件操作的错误。

以上是缓冲文件系统的操作函数,下边简单记录非缓冲文件系统。

缓冲文件系统用文件指针FILE* fp代表一个文件。非缓冲文件系统用一个整数来代表一个文件,该整数称为“文件代号”或“文件句柄”。非缓冲文件操作的函数原型在io.h中声明。

#include <io.h>

1:int open(const char* filename,int mode);

以mode方式打开文件filename,返回文件代号,失败时返回-1.

2:int close(int fd);

关闭文件fd,失败时返回-1,成功时返回0;

3:int creat(const char *filename,int mode);

创建文件。成功返回代号。

4:int read(int fd,void *buf,unsigned count);

从文件fd中取count字节带buf缓冲区,返回实际读得的字节数。

5:int write(int fd,void *buf,unsigned count);

把buf缓冲区的count字节内容写入文件fd中,返回实际写入的字节数。

6:long lseek(int fd,long offset,int origin);

把fd文件的读写位置指针从起点origin开始移动offset字节。返回实际移动的字节。失败时返回-1L。

以上是非缓冲文件系统所使用的函数,下边记录简要说明。

 

打开方式 说明
O_RDONLY 只读
O_WRONLY 只写
O_RDWR 读写
O_CREAT 创建
O_TEXT 文本文件
O_BINARY 二进制文件

时间挺晚了,就到这里吧,该睡觉了。这两天把眼睛要累坏了╮(╯▽╰)╭…

本文参考书:《C语言高级实例解析》 刘祎玮 汪晓平

<学习笔记>文件操作篇