zoukankan      html  css  js  c++  java
  • C Standart Library: File Operations

    File Operations
    The following functions deal with operations on files. The type size_t is the unsigned integral
    type produced by the sizeof operator.
    FILE *fopen(const char *filename, const char *mode)
    fopen opens the named file, and returns a stream, or NULL if the attempt fails. Legal
    values for mode include:
    "r" open text file for reading
    "w" create text file for writing; discard previous contents if any
    "a" append; open or create text file for writing at end of file

    "r+" open text file for update (i.e., reading and writing)
    "w+" create text file for update, discard previous contents if any
    "a+" append; open or create text file for update, writing at end
    Update mode permits reading and writing the same file; fflush or a file-positioning
    function must be called between a read and a write or vice versa. If the mode includes b
    after the initial letter, as in "rb" or "w+b", that indicates a binary file. Filenames are
    limited to FILENAME_MAX characters. At most FOPEN_MAX files may be open at once.
    FILE *freopen(const char *filename, const char *mode, FILE *stream)
    freopen opens the file with the specified mode and associates the stream with it. It
    returns stream, or NULL if an error occurs. freopen is normally used to change the
    files associated with stdin, stdout, or stderr.
    int fflush(FILE *stream)
    On an output stream, fflush causes any buffered but unwritten data to be written; on
    an input stream, the effect is undefined. It returns EOF for a write error, and zero
    otherwise. fflush(NULL) flushes all output streams.
    int fclose(FILE *stream)
    fclose flushes any unwritten data for stream, discards any unread buffered input,
    frees any automatically allocated buffer, then closes the stream. It returns EOF if any
    errors occurred, and zero otherwise.
    int remove(const char *filename)
    remove removes the named file, so that a subsequent attempt to open it will fail. It
    returns non-zero if the attempt fails.
    int rename(const char *oldname, const char *newname)
    rename changes the name of a file; it returns non-zero if the attempt fails.
    FILE *tmpfile(void)
    tmpfile creates a temporary file of mode "wb+" that will be automatically removed
    when closed or when the program terminates normally. tmpfile returns a stream, or
    NULL if it could not create the file.
    char *tmpnam(char s[L_tmpnam])
    tmpnam(NULL) creates a string that is not the name of an existing file, and returns a
    pointer to an internal static array. tmpnam(s) stores the string in s as well as returning
    it as the function value; s must have room for at least L_tmpnam characters. tmpnam
    generates a different name each time it is called; at most TMP_MAX different names are
    guaranteed during execution of the program. Note that tmpnam creates a name, not a
    file.
    int setvbuf(FILE *stream, char *buf, int mode, size_t size)
    setvbuf controls buffering for the stream; it must be called before reading, writing or
    any other operation. A mode of _IOFBF causes full buffering, _IOLBF line buffering of
    text files, and _IONBF no buffering. If buf is not NULL, it will be used as the buffer,
    otherwise a buffer will be allocated. size determines the buffer size. setvbuf returns
    non-zero for any error.
    void setbuf(FILE *stream, char *buf)
    If buf is NULL, buffering is turned off for the stream. Otherwise, setbuf is equivalent
    to (void) setvbuf(stream, buf, _IOFBF, BUFSIZ).

    注:文件IO有没有缓冲的buffer,效率差别很大。但是,据本人试验,除非刻意设置setbuf(stream,NULL),否则默认是有buffer的。但是可能针对特定程序设置buffer大小是一个调优的方法。

  • 相关阅读:
    近期前端中的 一些常见的面试题
    一道前端学习题
    前端程序员容易忽视的一些基础知识
    web前端工程师入门须知
    Web前端知识体系精简
    面试分享:一年经验初探阿里巴巴前端社招
    抽象类、抽象函数/抽象方法详解
    C#语法-虚方法详解 Virtual 虚函数
    面向对象语言:继承关系教程
    C#动态创建Xml-LinQ方式
  • 原文地址:https://www.cnblogs.com/freewater/p/2972019.html
Copyright © 2011-2022 走看看