第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(多集)可以重复.操作数据速度快,数据自动排序.红黑树(数据结构)红黑树-二叉树基本 ...
随机推荐
- Python学习(006)-深浅拷贝及集合
深浅拷贝 import copy husband=['xiaoxin',123,[200000,100000]] wife=husband.copy() #浅拷贝 wife[0]='xiaohong ...
- Python id
# id()函数可以帮我们查看一个变量的内存地址 a = 10 b = 30 print(id(a)) print(id(b)) lst = ["周杰伦","麻花藤&qu ...
- 题目1001:A+B for Matrices
题目1001:A+B for Matrices 时间限制:1 秒内存限制:32 兆 题目描述: This time, you are supposed to find A+B where A and ...
- 多名历年高考状元最终选择做中国顶尖黑客 - imsoft.cnblogs
原标题:揭秘中国顶尖黑客:二分之一是历年高考[微博]状元 “二分之一是各地的历年高考状元,二分之一是数学专业,二分之一来自微软.” Keen这样的团队是坚决与黑产划清界限的,这也是圈内的“道德洁癖”, ...
- 20155224 2016-2017-2 《Java程序设计》第5周学习总结
20155224 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 Java中的错误都会被打包为对象,可以尝试(try)捕捉(catch)代表错误的对象 ...
- 51Nod 1002:数塔取数问题(DP)
1002 数塔取数问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每 ...
- 51Nod:1085 背包问题
1085 背包问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...
- exec函数簇
转自:http://www.cppblog.com/prayer/archive/2009/04/15/80077.html 也许有不少读者从本系列文章一推出就开始读,一直到这里还有一个很大的疑惑:既 ...
- ES6必知必会 (五)—— Promise 对象
Promise 对象 1.Promise对象是ES6对异步编程的一种解决方案,它有以下两个特点: Promise对象代表一个异步操作,它只有三种状态:Pending(进行中).Resolved(已完成 ...
- SSD学习,keras
https://github.com/pierluigiferrari/ssd_keras