- 1、本文档共112页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux环境高级编程-文件和目录、标准IO.ppt
* * * * * * * 说明一下原因 * * * * * 可以举例子,例如假设offset是50,各种情况文件偏移量是多少 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 实际IO的含义 将fflush与sync等函数做个对比 * 谁释放这buf? * 谁释放这buf? * 谁释放这buf? * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 用于将文件偏移量设置到文件的起始位置 函数原型 void rewind(FILE *fp); 参数和返回值 fp:文件指针 获取当前的文件偏移量 函数原型 int fgetpos(FILE *fp, fpos_t *pos); 参数和返回值 fp:文件指针 pos:fgetpos函数将文件偏移量填入pos中 成功返回0,出错返回非0 设置文件偏移量 函数原型 int fsetpos(FILE *fp, fpos_t *pos); 参数和返回值 fp:文件指针 pos:存储了要设置的文件偏移量 成功返回0,出错返回非0 对流有三种读写方式 每次读写一个字符 每次读写一行 每次读写任意长度的内容 输入函数 int getc(FILE *fp); int fgetc(FILE *fp); int getchar(); 返回值 成功返回欲读字符,若已处于文件尾或出错返回EOF getchar()等同于getc(stdin) getc通常是宏,fgetc是函数 不管出错还是到达文件尾,都是返回EOF。如何区分? 调用ferror或feof int ferror(FILE *fp); int feof(FILE *fp); 当遇到文件结束符时,feof返回真,ferror返回假 当出错时,feof返回假,ferror返回真 在大多数实现中,为每个流在FILE对象中维持了两个标志 出错标志 文件结束标志 调用clearerr清除这两个标志 void clearerr(FILE *fp); 输出函数 int putc(int c, FILE *fp); int fputc(int c, FILE *fp); int putchar(int c); 返回值 成功返回c,出错返回EOF putchar(c)等同于putc(c, stdout) putc通常是宏,fputc是函数 输入函数 char* fgets(char *buf, int n, FILE *fp); 参数和返回值 buf:存放从fp读出的数据 n:buf的大小 fp:文件指针 返回值:成功返回buf,出错或读到文件尾则为EOF fgets函数一直读到下一个新行符为止,但是不超过n-1个字符 buf缓存以null字符结尾 若读到下一个新行符,会超过n-1个字符,则只会返回一个不完整的行,缓存总是以null字符结尾。 下一次的fgets调用会继续读该行。 输出函数 char* fputs(const char *str, FILE *fp); 参数和返回值 str:以null为结尾的字符串 fp:文件指针 返回值:成功返回非负值,出错则为EOF null符不写入文件 每次I/O操作读写某种数量的对象,而每个对象具有指定的长度 例如,可读写一个二进制数组、结构 函数原型 size_t fread(void *ptr, size_t size, size_t nobj, FILE *fp); size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp); 参数 第一个参数ptr:用于读写的缓冲区 第二个参数size:每个对象的大小 第三个参数nobj:要读写的对象个数 第四个参数fp:文件指针 返回值 返回读/写的对象数 读写一个二进制数组 float data[10]; fwrite(data, sizeof(float), 4, fp); 读写一个结构 struct{ int a; int b; }item; fwrite(item, sizeof(item), 1, fp); 格式化输出函数 int printf(const char* format, ....); int fprintf(FILE *fp, const char *format, ...); int sprintf(char *buf, const char *format, ...); printf将格式化数据写到标准输出 fprintf写至指定的流 sprintf写入数
文档评论(0)