标准IO库函数复习】的更多相关文章

打开文件,打开文件一定要成对写,养成好习惯很重要.比如 fopen()fclose<ol> <li>fopen()</li> <pre lang="c" escaped="true">/* fopen() */FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fd, const char *mode); FILE *freopen(con…
先来看看C标准I/O库函数是如何用系统调用实现的. fopen(3) 调用open(2)打开指定的文件,返回一个文件描述符(就是一个int 类型的编号),分配一 个FILE 结构体, 通常里面包含了: 文件fd 缓冲区指针 缓冲区长度 当前缓冲区读取长度 出错标志 返回这 个FILE 结构体的地址. fgetc(3)  通过传入的FILE *参数找到该文件的描述符.I/O缓冲区和当前读写位置,判断能否从I/O缓冲 区中读到下一个字符,如果能读到就直接返回该字符,否则调用read(2),把文件描述…
---恢复内容开始--- 1.linux标准io的copy #include<stdio.h> int main(int argc,char **argv) { if(argc<3) { printf("use:mycp file1 file2\n"); return -1; } FILE *src=fopen(argv[1],"r");//打开源文件 if(src==NULL) { printf("no file!\n");…
标准IO函数库隐藏了buffer大小和分配的细节,使得我们可以不用关心预分配的内存大小是否正确的问题. 虽然这使得这个函数库很容易用,但是如果我们对函数的原理不熟悉的话,也容易遇到很多问题.   1 流和FILE实体(Streams and FILE Objects) 前面的章节中,IO集中在文件描述符,每一个打开的文件都对应一个文件描述符,通过文件描述符对文件进行操作. 现在使用了标准IO库,讨论的重点集中在流(streams). 简要了解一下流: 当我们打开或创建了一个文件,我们说我们有一个…
(转)标准I/O缓冲:全缓冲.行缓冲.无缓冲 标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数.它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦. 缓冲区可由标准I/O例程自动冲洗,或者可以调用函数fflush(File *fp)冲洗一个流.如若fp是NULL,此函数将导致所有输出流被冲洗. 值得引起注意的是在UNIX环境 中,flush有两种意思:在标准I/O库方面,flush意味着将缓冲区中的内容写到磁盘上:在终端驱动程序方面flu…
1.标准IO和文件IO有什么区别? (1).看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是Linux系统的API. (2).C语言库函数是由API封装而来的.库函数内部也是通过调用API来完成操作的,但是库函数因为多了一层封装,所以比API要更加好用一些. (3).库函数比API还有一个优势就是:API在不同的操作系统之间是不能通用的,但是C库函数在不同操作系统中几乎是一样的.所以C库函数具有可移植性而API不具有可移植性. (4).性能上和易用性上看,C库函数一般要好一些.譬如I…
前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了几篇文章看看,直到发现了这篇博客:http://blog.sina.com.cn/s/blog_6592a07a0101gar7.html.讲的很不错. 一.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  …
最近学习linux系统下的应用编程,参考书籍是那本称为神书的<Unix环境高级编程>,个人感觉神书不是写给草鞋看的,而是 写给大神看的,如果没有一定的基础那么看这本书可能会感到有些头重脚轻的感觉.我自己就是这样,比方说看进程间通信信号量章 节的时候,开始感觉就很迷糊,因此也就想在这里写一些文字,给和我一样的草鞋分享一些自己的学习经历(算不上经验吧). 环境:   windows7,  VMware  9.0 操作系统版本: RHEL  5.5   内核版本:  2.6.18-194.el5 G…
3.1.6.文件读写的一些细节3.1.6.1.errno和perror(1)errno就是error number,意思就是错误号码.linux系统中对各种常见错误做了个编号,当函数执行错误时,函数会返回一个特定的errno编号来告诉我们这个函数到底哪里错了.(2)errno是由OS来维护的一个全局变量,任何OS内部函数都可以通过设置errno来告诉上层调用者究竟刚才发生了一个什么错误.(3)errno本身实质是一个int类型的数字,每个数字编号对应一种错误.当我们只看errno时只能得到一个错…