第十五章 输入/输出函数
---恢复内容开始---
1.perror:报告错误(stdio.h)
void perror (char const *message)
message不是NULL并且指向非空字符串
exit:终止执行(stdlib.h)
void exit(int status)
函数无返回值
2.标准I/O函数库缺陷:1.对程序中的函数兼容(两台机器架构不同) 2.当不可移植而去修改函数库,那么函数库不再标准,程序可移植性降低。
3.对于C程序,I/O操作简单的从程序中移进移出字节,这种字节流称为流。
4.一次性把写满的缓存区写入和逐片吧程序产生的输出分别写入,相比效率更高。
5.流分为两种类型:文本流和二进制流
文本文件约定以一个回车符和一个换行符(或称为行反馈)结尾。
在输出时,文本中的换行符被写成一对回车/换行符:\r\n
6.stdio.h所包含的声明之一就是FILE结构。
7.对于每个ANSIC C程序,运行系统必须至少提供三个流:标准输入,标准输出,标准错误。
8.程序为必须同时处于活动状态的每个文件声明一个指针变量,其类型为FILE *,这个指针指向这个FILE结构,当它处于活动状态时由流使用。
9.流通过调用fopen函数打开,为了打开一个流。
10.I/O函数以 单个字符,文本行和二进制数据处理数据。
11.fopen把文件名作为一个字符串而不是作为路径名,驱动器字母,字符扩展名等各个准备一个参数。
12.freopen函数用于打开(或重新打开)一个特定文件流。
FILE *freopen ( char const *filename, char const *mode , FILE *stream)
这个函数首先试图关闭这个流,然后用特定的文件和模式重新打开这个流。如果打开失败,函数返回一个NULL值。如果打开成功,函数就返回它的第三个参数。
13.流用fclose关闭,如果关闭成功,返回0,关闭失败,返回EOF。
14.
putchar('abc');
只打印一个字符,打印那个看编译器(dev是最后一个字符)。
15.ungetc 把一个先前读入的字符返回到流中,这样它可以在以后被重新载入。
16.fputs既可以一次写入一行的一部分,也可以一次写入一整行,甚至可以一次写入好几行。如果写入时出现错误,返回EOF,否则返回非负值。
17.fgets可以判断缓冲区字符串是否能容下,而gets不能。
18.为什么在scanf中加入&符号:传递参数传递的是指针,而不加这个符号,将导致变量的值作为参数传递给函数,而scanf函数(或其它两个)却把它解释为一个指针,当它被解引用时,或者导致程序终止,或者导致一个不可预料的内存位置数据被改写。
19.
于修改某些格式代码的含义。
20.

21.ftell函数返回流的当前位置,这个函数允许你保存一个文件的当前位置。在二进制流中,这个值就是当前位置距离文件起始位置之间的字节数。
22.ftell函数返回的值总是可以用于fseek函数中,作为一个距离文件起始位置的偏移量。
fseek:SEEK_SET SEEK_CUR SEEK_END
23.rewind函数将读/写指针设定回指定流的起始位置。它同时清楚流的错误提示标志。fgetpos和fsetpos分别是ftell和fseek的替代方案。
24.
改变缓冲方式:
void setbuf(FILE *stream,char *buf)
int setvbuf(FILE *stream,char *buf,int mod,size_t size)
临时文件:
FILE *tmpfile(void)
这个函数创建了一个文件,当文件被关闭或者程序终止时,这个文件自动删除,该文件以wb+的的方式打开。
临时文件名:
char *tmpnam(char *name)
不会导致重名,每次不同名字。
文件操纵函数:
int remove(char const *filename)
int rename(char const *oldname,char const *newname)
25.stdio.h头文件包含了使用I/O库函数所需要的声明。
函数库为I/O所提供的接口称为流。
26.FILE是一种数据结构,用于管理缓存区和储存流的I/O状态。
27.fopen最多打开文件数因编译器而异,不能小于8。

浙公网安备 33010602011771号