标准io与文件io
A: 代码重复:
语句块1;
while(判断)
{
语句块2;
语句块1;
}
上面可以改写为:
while(1)
{
语句块1;
if(判断)
break;
语句块2;
}
B: 标准IO和文件IO的区别:
标准IO:文件流fp,有缓存,库函数
文件IO:文件描述符fd(小的,非负的整型数),无缓存,系统调用
标准IO是依赖于文件IO的
b1: 标准IO:
stdin 键盘
stdout 屏幕
stderr 屏幕
fgetc 每次读入一个字符 fputc 每次写一个字符
fgets 每次读入一行 fputs 每次写一行
getchar
fprintf 格式化输出到文件流
sprintf 格式化输出到缓存
fopen 打开文件,建立一个文件流,与文件关联
fclose 关闭文件流
fread 对文件流直接进行读操作
fwrite 对文件流直接进行写操作
errno 输出错误的原因(结果是个数)
strerror 把结果数转换为字符串,然后输出错误的原因
perror 打印出错的原因(常用)
fflush 强制刷新缓存
stdout 行缓冲,只对/n进行刷新,对/r不进行刷新
stderr 无缓冲
fseek 移动当前的读写位置
ftell 查看当前的读写位置
freopen 重定向文件流
b2: 文件IO:
文件描述符分配原则:当前未被使用的数值最小的int数,0(标准输入)stdin,1(标准输出)stdout,2(标准错误)stderr
open 打开文件,将文件与文件描述符关联
close 关闭文件
read 读取文件,以字节为单位
write 写入文件
lseek 定位读写位置
b3: 文件描述符数值:有多个描述符指向file结构体
file结构体里面的成员变量指向文件的inode节点(结构体)
file结构体有一成员变量“引用计数”refc记录指向file结构体的文件描述符数量
b4: dup 文件描述符复制
duplicate a file descriptor
有多个文件描述符指向file结构体
C: 使用库函数(lib)/系统调用(system calls)的步骤:
1.函数的功能<------->函数名,查看man手册
2.参数列表:参数的个数;参数的类型
3.返回值、错误处理
4.头文件
c1: 系统调用:用户进程访问内核的接口,把用户从底层编程解放出来,提高系统的安全性
库函数:提供统一的编程接口,便于应用程序的移植,为了实现某个功能而封装到应用程序接口的集合
库函数是使用系统调用实现的
D: 文件类型(7种):一切皆文件
ls -l:查看文件类型
bcd-lsp(b:块文件 c:字符文件 d:目录 -:常规文件 l:链接文件 s:套接字 p:管道文件)
标准io与文件io的更多相关文章
- 8 . IO类-标准IO、文件IO、stringIO
8.1 IO类 #include <iostream> //标准IO头文件 8.2 文件输入输出流 #include <fstream> //读写文件头文件 std::fst ...
- 标准IO与文件IO 的区别【转】
本文转载自:http://blog.sina.com.cn/s/blog_63f31f3401013jrn.html 先来了解下什么是标准IO以及文件IO. 标准IO:标准I/O是ANSI C建立的一 ...
- 标准IO与文件IO 的区别
先来了解下什么是标准IO以及文件IO. 标准IO:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性.标准IO库处理很多细节.例如缓存 ...
- 文件IO和标准IO
2015.2.26 星期四,阴天 今天的内容主要是文件IO man 手册的分册: man -f open 查看那些分册中有openman 1 -- 普通的命令程序man 2 -- 系统调用man 3 ...
- linux 文件IO
1.文件描述符 (1)文件描述符的本质是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指针,再间接访问得到这个文件对应的文件表.(2)文 ...
- 文件IO大纲
文件流与文件描述符的区别 a) 任何进程在运行时都默认打开3个流对象,(stdin, stdout, stderr)它们都有对应的文件描述符,其文件描述符分别为0,1,2,以后打开的文件描述符的值一般 ...
- linux中文件IO
一. linux常用文件IO接口 1.1. 文件描述符 1.1.1. 文件描述符的本质是一个数字,这个数字本质上是进程表中文件描述符表的一个表项,进程通过文件描述符作为index去索引查表得到文件表指 ...
- Linux C 文件IO
文件IO 2021-05-31 12:46:14 星期一 目录 文件IO 基础IO open 错误 creat read 一个例子 write close lseek 文件空洞 unlink删除 io ...
- Golang文件IO 一
Golang文件IO 一 文件IO编程最基本.最常用的就属读写文件操作了.ioutil包实现了一些IO实用功能,其中就包括非常简捷.好用的文件读取功能. ioutil包有7个函数1个变量: var D ...
随机推荐
- ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)
ZOJ3944 People Counting ZOJ3939 The Lucky Week 1.PeopleConting 题意:照片上有很多个人,用矩阵里的字符表示.一个人如下: .O. /|\ ...
- 高可用mysql之MHA源码剖析
* MHA的整个故障(离线)切换过程 - 检测主库的状态,确认是否崩溃. - 确认服务崩溃,保存binlog,推送到主控机,并可以强制关闭主库避免脑裂. - 找出数据最新的从库(也就是read_mas ...
- Ubuntu 14.04开发环境初始化
安装fcitx, fcitx-googlepinyin, 移除默认键盘快捷键. 英文版不要安装系统推荐的语言更新,会使浏览器以及其他的应用的字体变成bitmap. 安装nvidia驱动 安装vim,设 ...
- Thrift的TJsonProtocol协议分析
Thrift协议实现目前有二进制协议(TBinaryProtocol),紧凑型二进制协议(TCompactProtocol)和Json协议(TJsonProtocol). 前面的两篇文字从编码和协议原 ...
- Unity3D 接完GVR SDk后如何插入自己的java代码
1.用Eclipse创建一个Android Application Project 2.用压缩软件打开gvr_android_common.aar和unitygvractivity.aar,分别把里面 ...
- zabbix安装配置界面点击next step没反应
修改/var/lib/php/session/宿主或者添加777权限 看到有个人说这个不能用,一开始我也没用,找了各种方式都不行,最后死马当作活马医,改了下权限,卧槽,一下子就OK了,日
- [MySQL]MySQL之权限管理
一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允许你从某台机器上连接m ...
- sql server 2008 R2配置管理
安装vs2013后,sql server 2008R2配置管理提示“远程过程调用失败” 这是因为vs2013自带的Microsoft SQL Server 2012Local DB与之冲突. 通过升级 ...
- MVC 导出Excel 的其中一方法(View导出excel)
场景:mvc下导出excel 思路:使用View导出excel 步骤: 1.导出标签添加事件 $("#export_A").click(function(){ //省略代码.... ...
- flask_sqlalchemy 命名遇到的一个小坑
大概用了三个小时的时间. models.py class DriveRecord(db.Model): """drive record model"" ...