标准IO,缓冲需要注意的
这里的知识和文件IO挺想通的,复习完文件IO,对这里理解清楚了很多,之前看的云里雾里的。
感觉这里整理清楚文件、文件描述符、流、文件指针(FILE对象)就容易很多了。还有就是各个函数的详解(作用、返回值、参数、出错判断相关)
接着把问题整理在下面吧,然后抽空考自己一下,哈哈哈哈哈有人看到觉得有更深的问题提出来就好了。
- 文件io和标准io的主要不同
- 流是什么,流的定向是什么,如何改变流的定向
- 文件IO打开一个文件返回文件描述符,然后文件描述符和文件关联起来表示这个文件,标准IO打开一个文件把一个流和文件关联起来。打开文件(打开流)返回一个(FILE *也称文件指针),
那么FILE对象和文件描述符的区别联系(注意返回的不是FILE对象,是文件指针) - 预定义文件描述符:STDIN_FILENO/ STDIN_FILENO/ STDIN_FILENO对应的文件指针是什么
- 三种缓冲:标准出错:不带缓冲、涉及终端设备的流:行缓冲、剩下的全缓冲
- 如何更改流的缓冲类型。
- 什么是冲洗一个流(任何时候都可以强制冲洗),如何冲洗所有的输出流
- fopen函数详细用法(作用、参数、返回值),尤其注意type参数
- 简述fopen与freopen、fdopen的区别。
- 当以读和写(type中有+)方式打开一个文件流时,需要注意什么!(当时找了很久也没有找到的错误)
- fclose函数详细用法
- getc(getchar)和fgetc的用法,以及两者的区别
- 读取一个字符的三个函数(getc、fgetc、getchar)他们的返回值是什么,实际上有可能几种情况,如何判断具体是哪种情况
- ungetc函数详细用法,到达文件末端时可以使用这个函数么
- 写入一个字符:putc、fputc和putchar
- 行缓冲读:fgets和fputs详细用法(为什么不推荐用gets和puts)
- 对比下标准IO和文件IO的效率
- 块缓冲读取写入:fread和fwrite详细用法,如何利用他们读写结构体。
- ftell、fseek、rewind函数详细用法
- 格式化输出函数:printf、fprintf、sprintf和snprintf四个函数的用法(注意对比)
- 格式化输入函数:scanf、fscanf和sscanf三个函数的用法(注意对比,明白为什么没用snscanf函数)
- 如何从文件流获取文件描述符(联想到dup函数和fcntl函数的重要意义)
- 创建临时文件函数:tmpnam和tmpfile详细用法
- 简单了解下标准IO的替代软件(了解过下脑子就行)