Unix环境高级编程笔记:5、标准IO库
1、fwide?? ? 设置流的定向? ? #include <stdio.h>? ? #include <wchar.h>? ? int fwide(FILE *fp,int mode);? ? mode参数值为负,fwide试图使指定的流是字节? ? mode参数值为正,fwide将试图使指定的流是宽定向? ? mode参数值为0,fwide将不试图设置流的定向,返回标识该流的定向的值?2、标准输入、标准输出、标准出错? ? 对一个进程预定义了三个流,并且这三个流可以自动被进程使用。标准输入、标准输出、标准出错? ? STDIN_FILENO????????? ? STDOUT_FILENO? ? STDERR_FILENO? ? 这三个标准io流通过预定义文件指针stdin、stdout、stderr加以引用 ? <stdio.h>?3、标准I/O提供三种类型缓冲? ? 全缓冲? ? 行缓冲? ? 不带缓冲?? ? 更改缓冲类型? ? #include <stdio.h>? ? void setbuf(FILE *restrict fp,char *restrict buf);? ? void setvbuf(FILE *restrict fp,char *restrict buf,int mode,size_t size);?? ? 任何时间,可以强制冲洗一个流? ? #include <stdio.h>? ? int fflush(FILE *fp);? ? 成功0 出错EOF?4、打开流? ? #include <stdio.h>? ? 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);?? ? type参数指定对该IO流的读、写方式? ? r或rb? ??????????????? ? ??为读而打开? ? w或wb? ? ?????????? ? ??把文件截短至0长,或为写而创建? ? a或ab? ? ??????????? ? ???添加? ? 为在文件尾写而打开,或为写而创建? ? r+或r+b或rb+????? ? 为读写而打开? ? w+或w+b或wb+? ? 把文件截短至0长,或为读和写而打开? ? a+或a+b或ab+? ? ? 为在文件尾读和写而打开或创建????? ? fclose关闭一个打开的流?5、读和写流? ? a)一次读一个字符? ? 输入函数?? ? int getc(FILE *fp);? ? int fgetc(FILE *fp);? ? int getchar(void);? ? 三个函数的返回值,或成功则返回下一个字符,或已经到达文件结尾或出错则返回EOF?? ? 函数getchar等价行getc(stdin),前二个函数的区别是getc可被实现为实现为宏?? ? 输出函数? ? #include <stdio.h>? ? int putc(int c ,FILE *fp);? ? int fputc(int c,FILE *fp);? ? int putchar(int c);? ? putchar(c)等效于putc(c,stdout)?????? ? b)每次一行? ? 每次输入一行? ??????#include <stdio.h
? ? char *fgets(char *restrict buf,int n,FILE *restrict fp);? ? char *gets(char *buf);????不要使用gets????? ? 每次输出一行? ? int fputs(const char *restrict str,FILE *restrict fp);? ? int puts(const char *str);? ? 二个函数返回值:或成功则返回非负值,或出错则返回EOF?? ??