例子:测试缓冲区大小
#include <stdio.h> int main(int argc, const char *argv[]) { //标准输入大小,没有输入内容时,标准输入缓冲是测不出大小的 getchar(); //在终端获取一个字符,标准输入内没有内容时,大小为0,存在数据时才会测试出其大小 printf("stdin_size:%d ",stdin->_IO_buf_end - stdin->_IO_buf_base); //标准输出大小 printf("2 ");//先输出一个标准输出,才可以测试大小 printf("stdout_size: %d ",stdout->_IO_buf_end - stdout->_IO_buf_base); //标准出错 printf("stderr_size: %d ",stderr->_IO_buf_end - stderr->_IO_buf_base); //全缓冲 //文件流,创建一个文件流 ,追加方式写入时默认文件中存在内容 FILE *fp = NULL; // 以 w 方式每次打开,先把文本流清空在向里面写入数据 if((fp = fopen(argv[1], "w")) != NULL) //参数agv[1] 表示在程序运行时从终端输入 文件名 { //把文件的大小输入到文件中,开始文本中并没有数据查看文件时,其内容为0,写入数据后在通过printf打印其大小就会显示4096 fprintf(fp,"%d ",fp->_IO_buf_end - fp->_IO_buf_base); printf("fp_size: %d ",fp->_IO_buf_end - fp->_IO_buf_base);//终端会打印4096 ,这两行调换位置,文本内容会是0,但是先打印的缓冲大小也为0 } return 0; }