相关资料

https://en.wikipedia.org/wiki/C_file_input/output
https://www.cnblogs.com/wonderKK/archive/2012/06/13/2547740.html
https://blog.csdn.net/shadow7499158/article/details/38931241

《UNIX环境高级编程》第5章

# man stdio
标准IO是基于流的。对一个进程预定义了三个流,它们是:标准输入、标准输出和标准出错。
#include <stdio.h>
FILE *stdin;
FILE *stdout;
FILE *stderr;

标准IO缓冲

标准IO提供缓冲的目的是尽可能减少使用 read 和 write 调用的次数。
全缓冲:在填满标准IO缓冲区后才进行实际的IO操作。
行缓冲:当在输入和输出中遇到换行符时,标准IO执行IO操作。
无缓冲:标准IO库不对字符进行缓冲存储。
ISO C要求缓冲具有下列特征:
1. 当且仅当标准输入和标准输出并不涉及交互式设备时,它们才是全缓冲的。
2. 标准出错决不会是全缓冲的。

但是,这并没有告诉我们,如果标准输入和输出涉及交互式设备时,它们是不带缓冲的还是行缓冲的;以及标准出错是不带缓冲的还是行缓冲的。
通常情况下:
对于驻留在磁盘上的文件通常是由标准IO库实施全缓冲的。
当流涉及一个终端时(例如标准输入和标准输出),通常使用行缓冲。
标准出错是不带缓冲的。
#include <stdio.h>

void setbuf(FILE *stream, char *buf);
int setvbuf(FILE *stream, char *buf, int mode, size_t size);

对于任何给定的流,可以调用上面两个函数更改缓冲类型。
可以使用 setbuf 函数打开或关闭缓冲机制。为了带缓冲进行IO,参数 buf 必须指向一个长度为 BUFSIZ 的缓冲区(该常量定义在<stdio.h>中),通常在此之后该流就是全缓冲的。为了关闭缓冲,将 buf 设置为 NULL。
使用 setvbuf,我们可以精确地指定所需的缓冲类型。这是通过 mode 参数实现的:
_IONBF unbuffered 不带缓冲
_IOLBF line buffered 行缓冲
_IOFBF fully buffered 全缓冲

fclose

#include <stdio.h>

int fclose(FILE *fp);
在该文件被关闭之前,冲洗缓冲区中的输出数据。丢弃缓冲区中的任何输入数据。
当一个进程正常终止时(直接调用 exit 函数,或从 main 函数返回),则所有带未写缓冲数据的标准IO流都会被冲洗,所有打开的标准IO流都会被关闭。

fread

#include <stdio.h>

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

fwrite

#include <stdio.h>

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

fflush

#include <stdio.h>

int fflush(FILE *stream);

清空文件流缓冲区。

fileno

#include <stdio.h>

int fileno(FILE *stream);

获取文件描述符。

格式化输出

#include <stdio.h>

int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);
The functions in the printf() family produce output according to a format.

The function printf() write output to stdout, the standard output stream;
The function fprintf() write output to the given output stream;
The functions sprintf() and snprintf() write to the character string str.

The function snprintf() write at most size bytes (including the terminating null byte ('\0')) to str.

标签: none

已有 6 条评论

  1. 想想你的文章写的特别好https://www.237fa.com/

  2. 《妖狐苏妲己》爱情片高清在线免费观看:https://www.jgz518.com/xingkong/61980.html

  3. ?文化类评语?

  4. 终极关怀的缺失可尝试补充升华。

  5. 新项目准备上线,寻找志同道合的合作伙伴coinsrore.com

  6. 2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

添加新评论