UNIX高级环境编程读书笔记(chapter5)
来源:互联网 发布:winrar解压缩软件4.20 编辑:程序博客网 时间:2024/05/19 20:18
5.9 二进制IO
下列两个函数执行二进制IO操作:fread(),fwrite().
(1)读或写一个二进制数组;
(2)读或写一个结构;
返回:读或写的对象数
5.10 定位流
有三种方法定位标准IO流
(1)ftell和fseek函数
(2)ftello和fseeko函数
(3)fgetpos和fsetpos函数
5.11 格式化IO
5.11.1 格式化输出
(1)printf将格式化数据写到标准输出
(2)fprintf写至指定的流
(3)sprintf将格式化的字符送入数组buf中
(4)snprintf
5.11.2格式化输入
(1)scanf
(2)fscanf
(3)sscanf
5.12 实现细节
5.13 临时文件
ISO C 标准提供了两个函数以帮助创建临时文件
(1)tmpnam():产生一个唯一的文件名,当sptr为NULL时,返回一个内部静态内存地址(保存了临时文件名),当下一次以NULL调用函数的时候,该内存会被修改。
(2)tmpfile():以wb+形式创建一个临时二进制文件
注:函数名: rewind()
功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头
5.14 tempfile()函数:是tmpname的一个变体,它允许调用者为所产生的路径名指定目录和前缀.
5.15mkstemp()函数:它类似于temfile, 但是该函数返回的不是文件指针,而是临时文件的打开文件描述符.
它返回的文件描述符可用于读写改文件, 与tmpfile不同的是,mkstemp创建的临时文件不会自动被删除,如若想从文件系统名字空间中删除改文件, 则我们
需要自行unlink它。
下列两个函数执行二进制IO操作:fread(),fwrite().
(1)读或写一个二进制数组;
(2)读或写一个结构;
返回:读或写的对象数
5.10 定位流
有三种方法定位标准IO流
(1)ftell和fseek函数
(2)ftello和fseeko函数
(3)fgetpos和fsetpos函数
5.11 格式化IO
5.11.1 格式化输出
(1)printf将格式化数据写到标准输出
(2)fprintf写至指定的流
(3)sprintf将格式化的字符送入数组buf中
(4)snprintf
5.11.2格式化输入
(1)scanf
(2)fscanf
(3)sscanf
5.12 实现细节
#include "apue.h"void pri_stdio(const char *, FILE *);int main(void){ FILE *fp; fputs("Enter any character\n", stdout); if (getchar() == EOF) { err_sys("getchar error"); } fputs("one line to standard error \n", stderr); pri_stdio("stdin", stdin); pri_stdio("stdout", stdout); pri_stdio("stderr", stderr); if ((fp = fopen("/etc/motd", "r")) == NULL) { err_sys("fopen error"); } if (getc(fp) == EOF) { err_sys("getc error"); } pri_stdio("/etc/motd", fp);}void pri_stdio(const char *name, FILE *fp){ printf("stream = %s, ", name); if (fp->_IO_file_flags & _IO_UNBUFFERED) { printf("unbuffered"); } else if (fp->_IO_file_flags & _IO_LINE_BUF) { printf("line buffered"); } else { printf("fully buffered"); } printf(", buffer size = %d\n", fp->_IO_buf_end - fp->_IO_buf_base);}
5.13 临时文件
ISO C 标准提供了两个函数以帮助创建临时文件
(1)tmpnam():产生一个唯一的文件名,当sptr为NULL时,返回一个内部静态内存地址(保存了临时文件名),当下一次以NULL调用函数的时候,该内存会被修改。
(2)tmpfile():以wb+形式创建一个临时二进制文件
#include "apue.h"int main(void){ char name[L_tmpnam], line[MAXLINE]; FILE *fp; printf("%s\n", tmpnam(NULL)); tmpnam(name); printf("%s\n", name); if ((fp = tmpfile()) == NULL) { err_sys("tmpfile error"); } fputs("one line of output\n", fp); rewind(fp); if (fgets(line, sizeof(line), fp) == NULL) { err_sys("fgets error"); } fputs(line, stdout); exit(0);}
注:函数名: rewind()
功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头
5.14 tempfile()函数:是tmpname的一个变体,它允许调用者为所产生的路径名指定目录和前缀.
#include "apue.h"int main(int argc, char *argv[]){ if (argc != 3) { err_quit("usage: ./5.4 <directory> <prifix>"); } printf("%s\n", tempnam(argv[1][0] != ' ' ? argv[1] : NULL , argv[2][0] != ' ' ? argv[2] : NULL)); exit(0);}
5.15mkstemp()函数:它类似于temfile, 但是该函数返回的不是文件指针,而是临时文件的打开文件描述符.
它返回的文件描述符可用于读写改文件, 与tmpfile不同的是,mkstemp创建的临时文件不会自动被删除,如若想从文件系统名字空间中删除改文件, 则我们
需要自行unlink它。
0 0
- UNIX高级环境编程读书笔记(chapter5)
- 《Unix环境高级编程》读书笔记(1)
- Unix环境高级编程读书笔记(一)
- UNIX高级环境编程读书笔记(chapter4)
- UNIX高级环境编程读书笔记(chapter7)
- UNIX高级环境编程读书笔记(chapter8)
- UNIX高级环境编程读书笔记(chapter9)
- UNIX高级环境编程读书笔记(chapter10)
- UNIX高级环境编程读书笔记(chapter11)
- UNIX高级环境编程读书笔记(chapter12)
- UNIX高级环境编程读书笔记(chapter13)
- UNIX高级环境编程读书笔记(chapter14)
- 《unix环境高级编程》 读书笔记 (1)
- 《unix环境高级编程》 读书笔记 (2)
- 《unix环境高级编程》 读书笔记 (3)
- 《unix环境高级编程》 读书笔记 (4)
- 《unix环境高级编程》 读书笔记 (5)
- 《unix环境高级编程》 读书笔记 (6)
- 未分类--Windows API--EnumProcesses
- 未分类--Windows API--OpenProcess
- 001_016 Python 替换字符串中的子串
- UNIX高级环境编程读书笔记(chapter4)
- Java 解析xml文件
- UNIX高级环境编程读书笔记(chapter5)
- UNIX高级环境编程读书笔记(chapter7)
- codeforces round #235 A. Vanya and Cards
- 华为机试题----n个长度的字符串中取m个长度的组合
- 3.11 周一 数据结构 数电
- 001_017 Python 替换字符串中的子串string.template
- HTML固定列表宽度,超出部分自动隐藏,设置2倍行距,单元格占据两行、两列
- 001_018 Python 一次完成多个字符串替换
- java web项目修改访问路径