您的位置:首页 > 运维架构 > Linux

Linux 系统编程学习-文件I/O操作

2014-02-21 11:11 274 查看
一、非缓冲文件操作

执行非缓冲文件操作后,应用程序将立即获取或传送数据,非缓冲文件操作的函数只有:read(),write()。

从文件中将信息讲到到指定的内存区域中read(文件标识符,内存块指针,内存块长度);

返回值是实际读取的长度,没有读取到数据返回0,错误返回1

文件标识符可使用open()函数获得,或者使用系统预先分配的文件标识符。

将指定长度的数据写入文件中write(文件标识符,内存块指针,内存块长度) 返回值同read()函数

  注:read(0,内存块指针,内存块长度)中文件标识符0是系统预定义的文件标识符,代表标准输入,实现的操作与gets()或scanf()函数相当。

指定指针的具体位置lseek(文件标识符,偏移长度,起始位置) 返回值是指针位置,失败返回-1

二、缓冲文件操作

打开文件流fopen(路径,打开方式),返回值是文件流指针,失败返回NULL

关闭文件流fclose(文件流指针),当fclose()函数执行时,所有放在缓冲区等待写入的数据都将被写入到文件中,如果数据没能成功保存,返回-1,否则返回0

需要用到文件流结构指针 FILE *

读取文件流fread(缓冲区指针,长度,数量,文件流指针)

写入文件流fwrite()

   fflush(缓冲区指针) 此函数是待写入的数据存储在缓冲区中,而又要立即将缓冲区的数据写入文件

文件流的格式化输入与输出

fscanf(文件流指针,“控制字符串”,输入项列表);返回值是正确输入项的个数

fprintf(文件流指针,“控制字符串”,输出项列表);返回值是实际输出数据的长度

注:fscanf()并不是最灵活的实现方法,因为需要预先估计文件的形式并定义控制字符串,它会将所遇到数值为0的地方当作字符串结束符处理。

文件流的定位操作

fgetpos(文件流指针,fpos_t *位置),获得文件当前读写位置,操作成功返回0,否则返回-1

fsetpos(文件流指针,const fpos_t *位置)设置文件读写位置,返回值同上

ftell(文件流指针)获得文件当前读写位置偏移量,返回值为长整型

rewind(文件流指针)将文件指针重新指向一个流的开头

注:fpos_t类型是标准函数库中定义的一种结构体,是文件流FILE结构体中的一个成员。

文件流操作的其他函数

fgetc(文件流指针)从文件读取一个字符,并将该字符以整型数据返回给调用者;

fputc(字符型数据,文件流指针) 向文件输出一个字符,返回操作结果

fgets(字符串指针,最大长度,文件流指针)从文件读取一个字符串保存到字符串指针指向 的位置,操作成功返回字符串指针

fputs(字符串指针,文件流指针)向文件输了一个字符串,操作成功时返回字符串的长度

freopen(路径,打开方式,文件流指针)重新打开一个文件

setvbuf(文件流指针,缓冲区指针,类型,缓冲区大小)设置文件流的缓冲区

  remove(路径)删除文件或目录

文件操作流的错误处理

ferror(文件流指针)判断文件流操作是否失败,失败返回非0,否则返回0

feof(文件流指针)当文件流内指向文件中位置的指针到达文件尾,返回非0,否则返回0

clearee(文件流指针)清除errno变量内错误信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: