文件操作的基本函数

来源:互联网 发布:淘宝客户如何导入微信 编辑:程序博客网 时间:2024/06/06 12:24

    • 文件操作的基本函数
      • 一标C下的文件操作基本函数
        • 1fopen3 fdopen3 freopen3
        • 2fclose3
        • 3fread3
        • 4fwrite3
        • 5fseek3
        • 6rewind3
        • 7ftell3
      • 二UC下的文件操作基本函数
        • 1creat2
        • 2open2
        • 3close2
        • 4read2
        • 5write2
        • 6lseek2

文件操作的基本函数

一、标C下的文件操作基本函数

(1)fopen(3) / fdopen(3) / freopen(3)

#include <stdio.h>FILE *fopen(const char *path, const char *mode);

功能:
  主要用于打开指定的文件;

参数:
  第一个参数:字符串形式的文件路径名;
  第二个参数:操作文件的具体方式,但不能指定文件本身没有的权限;
    r - - - - - 以只读的方式打开,stream指向文件的开头;
    r+ - - - - 以读写的方式打开,stream指向文件的开头;
    w - - - – 以只写的方式打开,若文件存在,会清空原文件中的内容;若不存在,则创建文件,stream指向文件的开头;
    w+ - - – 以读写的方式打开,除此外和w相同;
    a - - - - - 以追加写入的方式打开,若文件不存在,会创建文件,stream指向文件的末尾;
    a+ - - - - 以读写的方式打开,stream指向文件的开头,但写入时会从文件末尾追加写入;(不建议同时进行读取和写入操作
  如果要对二进制文件进行操作,那么在选择具体的方式中应添加字母b

返回值:
  success —- FILE结构体类型的指针,error —- NULL;

struct _IO_FILE {    int _flags;    char* _IO_read_ptr;    ......};typedef struct _IO_FILE FILE;
#include <stdio.h>FILE *fdopen(int fd, const char *mode);

功能:
  主要用于将文件描述符对应的文件转换为文件指针后返回,mode代表文件操作的具体方式,此处必须和原先文件描述词读写模式相同;

返回值:
  success —- 文件指针,error —- NULL;

#include <stdio.h>FILE *freopen(const char *path, const char *mode, FILE *stream);

功能:
  主要用于实现重定向,把预定义的标准流文件定向到由path指定的文件中。

参数:
  第一个参数:指定的重定向的字符串形式文件路径名;
  第二个参数:文件访问的具体权限,如:”r”表示“只读访问;
  第三个参数:流文件,一般使用标准流文件,如:stdin、stdout、stderr;

返回值:
  success —- 指向该输出流的文件指针,error —- NULL;


(2)fclose(3)

#include <stdio.h>int fclose(FILE *stream);

功能:
  主要用于关闭指定的文件,参数是fopen(3)的返回值;

返回值:
  success —- 0,error —- EOF;

(3)fread(3)

#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);/* size_t = long unsigned int */

功能:
  主要用于读取指定文件中的内容;

参数:
  第一个参数:存放读取内容的地址;
  第二个参数:读取数据类型的大小;
  第三个参数:读取相同数据类型的个数;
  第四个参数:结构体类型的指针,同样是fopen(3)的返回值;

返回值:
  success —- 实际读取指定数据类型的个数,error和end-of-file —- 0;(区分应使用feof(3)ferror(3)

(4)fwrite(3)

#include <stdio.h>size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

功能:
  主要向指定的文件中写入内容;

参数:
  第一个参数:存放要写入数据空间的地址;
  第二个参数:存入数据类型的大小;
  第三个参数:存入相同数据类型的个数;
  第四个参数:结构体类型的指针,同样是fopen(3)的返回值;

返回值:
  success —- 实际存入指定数据类型的个数,error和end-of-file —- 0;(区分应使用feof(3)ferror(3)

(5)fseek(3)

#include <stdio.h>int fseek(FILE *stream, long offset, int whence);

功能:
  主要用于设置stream指向的位置;

参数:
  第一个参数:结构体类型的指针,同样是fopen(3)的返回值;
  第二个参数:指定的偏移量;
    >0 - - - - - - 向后偏移,也就是向文件末尾方向;
    0 - - - - - - -偏移量为0;
    <0 - - - - - - 向前偏移,也就是向文件开头方向;
  第三个参数:指定起始位置;
    SEEK_SET - - - - 文件开头位置(向后偏移合理,向前偏移不合理)
    SEEK_CUR - - – 文件当前位置(向前向后偏移都合理)
    SEEK_END - - – 文件末尾位置(向前向后偏移都合理)

(6)rewind(3)

#include <stdio.h>void rewind(FILE *stream);

功能:
  将偏移量设置为文件的开头,即等同与(void) fseek(stream, 0L, SEEK_SET),其中0L等于0字节;

(7)ftell(3)

#include <stdio.h>long ftell(FILE *stream);

功能:
  主要用于获取当前位置的偏移量,配合fseek(3)可获得文件的大小信息,参数是结构体类型的指针,同样是fopen(3)的返回值;

返回值:
  success —- 当前位置的偏移量,error —- -1;


二、UC下的文件操作基本函数

(1)creat(2)

#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int creat(const char *pathname, mode_t mode);

功能:
  主要用来创建一个文件;

参数:
  第一个参数:字符串形式的文件路径名;
  第二个参数:创建文件的具体权限,如:0664;

返回值:
  success —- 文件描述符,error —- -1;

(2)open(2)

#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags, mode_t mode);

功能:
  主要用来打开或创建一个文件;

参数:
  第一个参数:字符串形式的文件路径名;
  第二个参数:具体的标志如下所示;
    其中O_RDONLY | O_WRONLY | O_RDWR必须三者择一
    其它标志可根据需要选择:
      O_APPEND - - - - 追加写入,即打开文件时文件位置偏移量在文件末尾;
      O_CREAT - - - - – 若文件不存在,则创建文件;
      O_EXCL - - - - - - -通常与O_CREAT配合使用,若文件不存在,则创建文件,若文件存在,则失败;
      O_TRUNC - - - - -若文件存在,则清空文件内容,文件大小变为0字节
  第三个参数:创建文件的具体权限,如:0664;

返回值:
  success —- 文件描述符,error —- -1;

(3)close(2)

#include <unistd.h>int close(int fd);

功能:
  主要用于关闭一个被打开的文件。

参数:
  第一个参数:文件描述符,也就是open()的返回值;

(4)read(2)

#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);/* ssize_t = long int; size_t = long unsigned int; */

功能:
  主要用于读取指定文件中的内容;

参数:
  第一个参数:文件描述符,同样是open()的返回值;
  第二个参数:存放读取数据空间的地址;
  第三个参数:期望读取的字节数;

返回值:
  success —- 实际读取的字节数,error —- -1;

(5)write(2)

#include <unistd.h>ssize_t write(int fd, const void *buf, size_t count);

功能:
  主要用于向指定文件中写入内容;

参数:
  第一个参数:文件描述符,同样是open()的返回值;
  第二个参数:要写入的数据的存储地址;
  第三个参数:期望写入的字节数;

返回值:
  success —- 实际写入的字节数,error —- -1;

(6)lseek(2)

#include <sys/types.h>#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);  //off_t = long int;

功能:
  主要用于重新定位文件读写时的偏移量,可以获取文件的大小信息;

参数:
  第一个参数:文件描述符,同样是open()的返回值;
  第二个参数:指定偏移量;
    >0 - - - - - - 向后偏移,也就是向文件末尾方向;
    0 - - - - - - -偏移量为0;
    <0 - - - - - - 向前偏移,也就是向文件开头方向;
  第三个参数:指定起始位置;
    SEEK_SET - - - - 文件开头位置(向后偏移合理,向前偏移不合理)
    SEEK_CUR - - – 文件当前位置(向前向后偏移都合理)
    SEEK_END - - – 文件末尾位置(向前向后偏移都合理)

返回值:
  success —- 距离文件开头位置的偏移量,error —- (off_t)-1;

原创粉丝点击