第3章 文件I/O(1)_标准C的I/O
1. 标准C的I/O和FILE结构体
1.1 标准C的I/O库函数
(1)char *fgets( char *string, int n, FILE *stream );//从流中获取字符串
(2)int printf( const char *format [, argument]... );
(3)int fprintf( FILE *stream, const char *format [, argument ]...);//格式化字符串到流中
(4)size_t fread( void *buffer, size_t size, size_t count, FILE *stream );//从流中读取数据
(5)size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );//将数据写入流中。
1.2 标准输入、标准输出和标准错误流
(1)标准输入流:#defing stdin (&_iob[0]) //stdin的文件描述符为0
(1)标准输出流:#defing stdout (&_iob[1]) //stdout的文件描述符为1
(1)标准错误流:#defing stderr (&_iob[2]) //stderr的文件描述符为2
1.3 FILE结构体
typedef struct _iobuf {
int cnt; // 剩余未被读取的字符数
char *ptr; // 下一个要被读取的字符的地址
char *base; // 缓冲区基地址
int flag; // 文件访问模式,读写状态标志位
int fd; // 文件描述符
} FILE;
(1)cnt统计的字符个数包含“\n”
(2)缓冲区的刷新就是将指针 ptr 变为缓冲区的基地址 ,同时 cnt 的值变为0 ,因为缓冲区刷新后里面是没有数据的
1.4 标准C的I/O缓存类型
(1)全缓存:要填满整个缓存区后才进行I/O系统调用操作。对于磁盘文件通常使用全缓存访问。
(2)行缓存
①涉及一个终端时(例如标准输入或标准输出),使用行缓存。
②行缓存满自动输出
③碰到换行符自动输出
(3)无缓存:标准错误流stderr通常不带缓存区的,这使得错误信息能够尽快地显示出来。
【编程实验】printf的行缓存
#include <stdio.h> int main(int argc, char* argv[])
{
printf("hello iotek"); //注意这里没有换行符.这里内容会先
//被放入缓存,没遇到\n不会被输出
while(){
sleep();
} return ;
}
第3章 文件I/O(1)_标准C的I/O的更多相关文章
- perl5 第五章 文件读写
第五章 文件读写 by flamephoenix 一.打开.关闭文件二.读文件三.写文件四.判断文件状态五.命令行参数六.打开管道 一.打开.关闭文件 语法为open (filevar, file ...
- 零基础学Python--------第10章 文件及目录操作
第10章 文件及目录操作 10.1 基本文件操作 在Python中,内置了文件(File)对象.在使用文件对象时,首先需要通过内置的open() 方法创建一个文件对象,然后通过对象提供的方法进行一些基 ...
- 第三章 文件 I/O
3.1 引言 先说明可用的文件 I/O 函数:open.read.write.close,然后说明不同缓冲区长度对read和write函数的影响. 本章所说的函数经常被称为不带缓冲的 I/O (unb ...
- 第四章 文件的基本管理和XFS文件系统备份恢复 随堂笔记
第四章 文件的基本管理和XFS文件系统备份恢复 本节所讲内容: 4.1 Linux系统目录结构和相对/绝对路径. 4.2 创建/复制/删除文件,rm -rf / 意外事故 4.3 查看文件内容的命令 ...
- 20190903 On Java8 第十七章 文件
第十七章 文件 在Java7中对 文件的操作 引入了巨大的改进.这些新元素被放在 java.nio.file 包下面,过去人们通常把nio中的n理解为new即新的io,现在更应该当成是non-bloc ...
- ca75a_c++_标准IO库-利用流对象把文件内容读取到向量-操作文件
/*ca75a_c++_标准IO库习题练习习题8.3,8.4,8.6习题8.9.8.10 ifstream inFile(fileName.c_str());1>d:\users\txwtech ...
- linux文件内容列传行_行转列
================ 文件内容列传行_行转列 ================ 一.列转行 1.编辑测试文件 vi log.txt 16:23:00 8.2% 1773620k 16:2 ...
- 《UNIX环境高级编程》(APUE) 笔记第三章 - 文件I/O
3 - 文件I/O Github 地址 1. 文件描述符 对于内核而言,所有打开的文件都通过 文件描述符 (file descriptor) 引用.当打开一个现有文件或创建一个新文件时,内核向进程返回 ...
- ca72a_c++_标准IO库:面向对象的标准库
/*ca72a_c++_标准IO库:面向对象的标准库继承:基类->派生类3个头文件9个标准库类型IO对象不可复制或赋值 ofstream, f--file,文件输出流ostringstream, ...
- cb23a_c++_标准模板库STL_set_multiset_关联容器
cb23a_c++_标准模板库STL_set_multiset_关联容器 set(集)数据不能重复.multiset(多集)可以重复.操作数据速度快,数据自动排序.红黑树(数据结构)红黑树-二叉树基本 ...
随机推荐
- mysql-connector-java-3.1.10-bin-g.jar 和 mysql-connector-java-3.1.10-bin.jar两个文件有什么不同呀?
MySQL Connector/J的文档里说: MySQL Connector/J is distributed as a .zip or .tar.gz archive containing the ...
- 拦截器interceptors
拦截器interceptors 1. 基于HandlerMapping,对请求实施拦截,根据业务需求,基于不同的HandlerMapping定义多个拦截器 2. HandlerInterceptor接 ...
- gradle仓库配置
Android Studio使用Gradle构建app.Gradle的使用非常灵活,其中可以设置使用多种类型的仓库,来获取应用中使用的库文件. 支持的类型有如下几种: 类型 说明 Maven cen ...
- 【微信小程序推广营销】教你微信小程序SEO优化,让你的小程序快人一步抢占先机
今年一月份上线的小程序,经过近一年的沉淀发酵,现在也进入了快速发展期. 在未来肯定会有越来越多的小程序诞生,小程序多了就需要搜索,那么如何让自己的小程序在众多的小程序中脱颖而出,这就需要小程序SEO优 ...
- 6.2 socket 流协议与粘包
TCP IP协议是流协议,对上层协议来讲是没有边界的,主机A发送两个消息M1和M2,如下图所示: 主机A发送了M1和M2,主机B在接收时有4种情况: 1.先收了M1,又收了M2 2.M1.M2一起收到 ...
- Android的界面设计工具——DroidDraw
软件名称:DroidDraw 软件大小:489KB(Windows版本) 支持系统:Mac OS X/Windows/Linux 下载地址:http://code.google.com/p/droid ...
- zookeeper windows 下配置和基础命令
原文链接:http://blog.csdn.net/woshioosm/article/details/45560177 1, 解压zookeeper ,在目录下建立文件夹 data 和log 2,在 ...
- POI的简单使用
一:简介 利用POI工具可以导出word,excel,ppt等office文件 二:程序代码示例 package com.wang.test; import java.io.File; import ...
- Documentation/usb/gadget_configfs.txt
Linux USB gadget configured through configfs 25th April 2013 Overview======== A USB Linux Gadget is ...
- Hive2:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
[root@node1 ~]# hive which: no hbase in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bi ...