标准I/O库二

5.1 流,是文件打开以后为了输入输出操作而设计的。输入输出的“宽度”就是流的定向(包括单字节与多字节,fwide可以设置,freopen清除定向)。从流中读入数据和读出数据用到getc,putc等函数。为了减少调用这些函数的次数,就用到了缓冲机制(setbuf,setvbuf设置)。为了保证错误传送的及时性,标准出错流是不带缓冲的;从终端设备(计算机网络最外围设备)读入读出是行缓冲;其他设备均是全缓冲。

一个进程预定义三个流,标准输入,标准输出,标准出错。

【对流的一系列操作】

1)打开流:返回文件指针,(open等返回文件描述符)

FILE *fopen(const char *restrict pathname, const char *restrict type);

FILE *freopen(const char *restrict pathname, const char *restrict type, FILE *restrict fp)

FILE *fdopen(int filedes, const char *type);

freopen;在一个流fp以type形式打开一个文件pathname。使得该流与该文件相关联,清除掉流原有的定向(改头换面?),将一个文件打开为一个预定流。 

fdopen:filedes:文件描述符,将文件描述符与一个流相关联     

2)读入写流流

一次读写一个字符(带c),一次读写一行(带s),一次读写一个结构(fread,fwrite)。

3)定位流

找到文件指针的位置。

long ftell(FILE *FP); //文件指针相对于文件首的偏移字节数。

int fseek(FILE *fp, long offset, int whence);//相对于二进制文件:whence:OFF_END,OFF_SET,OFF_CUR。offset:偏移量 ;文本文件:whence必须是cur位置,offset是0(回到文件起始位置)或者是调用ftell得到的文件指针以定位到指针所在的位置。

void rewind(FILE *fp)

 

 

 

 

  

posted @ 2016-12-16 17:33  尹盛  阅读(149)  评论(0)    收藏  举报