1.       概述

(1)       标准文件编程库中胜于文件创建、打开、关闭和删除的函数有:

l  fopen:     打开文件流或创建文件函数

l  freopen:  文件流替换函数

l  fclose:     关闭文件流

l  remove:   删除文件函数

l  rename:   文件更名函数

(2)       标准文件编程库中用于无格式字符输入的函数有getc, getchar, 和fgetc等。

(3)       标准文件编程库中用于无格式字符输出的函数有putc, putchar和fputc等。

(4)       标准文件编程库中用于文件行输入的函数有gets和fgets等。

(5)       标准文件编程库中用于文件行输出的函数有puts和fputs等。

(6)       标准文件编程库中用于文件块输入输出的函数有fread和fwrite等。

(7)       标准文件编程库中用于格式化输出的函数有printf、fprintf和sprintf等

(8)       标准文件编程库中用于格式化输入的函数有scanf、fscanf和sscanf等。

(9)       标准文件编程库中用于定位文件读写位置的函数有:

l  fseek:      设置文件流当前位置

l  rewind:   重置文件流

l  ftell:              获取文件流

(10)   标准文件编程库中用于文件状态的函数如下:

l  feof:判断文件流是否结束。

l  ferror:     判断文件流操作是否发生错误。

l  clearer:    置空文件流中的错误标志。

(11)   标准文件编程库提供了三种缓冲模式:全缓冲、行缓冲和无缓冲,其中用于文件缓冲的函数有:

l  setbuf:     设置缓冲模式(缓冲大小为BUFSIZ)

l  setvbuf:   设置缓冲模式(缓冲大小由调用者指定)

l  fflush:     刷新缓冲区

2.       实践经验

文件读写:r模式一般应用于读文件处理中,比如批量代发时读入第三方上送的交易数据,导入第三方提供的报表文件数据等。w模式一般应用在单进程文件写入处理中,比如报表文件的创建与完成等。a模式一般应用于多个进程同时写入同一文件的处理中,比如记录日志文件等。

文件指针在打开后务必检查是否可用。函数freopen常用于比标准输入、输出和错误进行重定向。

设计用户直接阅读的文件时,选择文本文件。设计程序阅读的文件时,选择二进制文件。

字符输入函数族虽然每次读取一个字符,但是其返回值为整型,故在返回值变量中务必定义为“int”,而不是“char”或“unsigned char”,否则将会读取到错误的信息。

如果程序需要同时打开两个以或两个以上文件,当后一个文件的打开操作发和错误,而不得不退出时,请务必关闭前面已经打开的文件。

3.       例子

3.1   变长参数

#include <stdarg.h>

int mysum(int I, …)

{

int r = 0;

int j = 0;

va_list pvar;

va_start(pvar, i);

for(j=0; j<i; j++)

{

r += va_arg(pvar, int);

}

va_end(pvar);

return r;

}

int printLog(FILE * pfile, const char * pformat, …)

{

va_list _va_list;

char szBuf[1024];

if(pformat == NULL || pfile == NULL)

return -1;

va_start(_va_list, pformat);

vsprintf(szBuf, pformat, _va_list);

va_end(_va_list);

fputs(szBuf, pfile);

return 0;

}

PS:  od命令用于dump files in octal and other formats

1.1   文件的状态

标准文件编程库中用于文件状态的函数如下:

int ferror(FILE *stream);

int feof(FILE *stream);

int clearer(FILE *stream);

//在错误发生后立马调用语句“sterror(errno)”可以获取当前的错误提示信息

实例代码:

char *strerror(int errnum);

/**

*读取文件”etc/passwd",当文件结束时自动退出

*/

#include <stdio.h>

int main()

{

FILE *fp;

char buf[1024];

if((fp=fopen("/etc/passwd", "r")) == NULL)

{

printf("Open file passwd failed./n");

return;

}

//标注红线部分为函数feof的调用模板

while(!feof(fp))

{//feof 在文件读取结束后返回非0值

fgets(buf, sizeof(buf), fp);

if(feof(fp))

break;

fputs(buf, stderr);

}

return 0;

}

转载于:https://my.oschina.net/fuyajun1983cn/blog/263896

专题3 标准IO编程相关推荐

  1. 《Linux操作系统 - 高级编程》第一部分 标准IO及文件IO(第2章 标准IO)

    2.1 Linux I/O概述 2.1.1文件I/O和标准I/O的概念 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O).不带缓存指的是每个read,write都调用内核中的 ...

  2. 《Unix环境高级编程》---标准IO

    一.基础结构 1.文件 FILE FILE是标准IO用来表示文件的结构体,所有标准IO都以FILE为基础. stdin FILE类型的指针,指向标准输入流. stdout FILE类型的指针,指向标准 ...

  3. 标准IO库--unix环境高级编程读书笔记

    标准IO库是C语言提供的一个库,不光存在于linux中,在windows中也是有的.标准IO库和文件IO的不同是,标准IO库是对文件IO(即系统调用)的封装,并且在用户层添加了一些缓冲区. 文件IO的 ...

  4. 应用编程课程4.系统IO和标准IO的比较,自己做的一些理解,仅仅方便自己看

    /* 1.注意fseek实际上是调用lseek来实现的, 比较以下标准io与文件io的区别 注意:在stream这个概念中,有三个标准流stdin.stdout.stderr,,在我们当前这个文件描述 ...

  5. 《UNIX环境高级编程》笔记 第五章-标准IO库

    1. 流和FILE对象 在第三章的系统调用都是围绕文件描述符fd的.但是标准I/O库函数操作则是围绕流进行的.当使用标准I/O库打开或创建一个文件时,使用一个流与一个文件关联. 当打开一个流时,标准I ...

  6. Python学习笔记十 IO编程

    参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 IO编程 I ...

  7. JAVA网络IO编程

    2019独角兽企业重金招聘Python工程师标准>>> JAVA网络IO编程(BIO NIO AIO) 一.传统的BIO编程 1.网络编程的基本模型是C/S模型,即两个进程间的通信. ...

  8. Python学习笔记:Io编程序列化

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. Python之IO编程

    前言:由于程序和运行数据是在内存中驻留的,由CPU这个超快的计算核心来执行.当涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.由于CPU和内存的速度远远高于外设的速度,那么在IO编程中就存在 ...

最新文章

  1. Pytorch中多GPU训练指北
  2. 交通信号灯检测与行人过马路策略
  3. sqlserver数据文件位置如何迁移
  4. dubbo 服务压测_全链路压测资料汇总——业内大厂解决方案
  5. java代码杨辉三角_用java实现杨辉三角的示例代码
  6. 通过JavaFX标注制作动画效果
  7. iphonexr电池容量_iPhone12mini电池容量多少毫安能用多久 iPhone12mini适合打游戏王者吗...
  8. 大容量内存的电脑提速技巧
  9. php找100到1000之间的素数_php编程输出100以内的素数
  10. 发票ocr识别查验解决方案
  11. hashcat破解密码规则示例
  12. 2021-01-27
  13. php 送货单管理系统,销售送货单管理系统下载
  14. 笔记本安装win10+ubuntu双系统超详细教程
  15. HDU 5651 xiaoxin juju needs help 组合数
  16. springBoot启动错误:Field categoryMapper in xxx.xxx.service.impl.CategoryServiceImpl required a bean of
  17. Azure认证 Administrator Associate(AZ-104) 考试指南,资料分享
  18. 工信部域名icp查询 在哪查询域名icp信息
  19. Java匿名内部类方法调用
  20. Python文档基础操作

热门文章

  1. js插件类库组织与管理
  2. Asp.net中的两种刷新父窗体方法
  3. WebWorker与WebSocket实现前端消息总线
  4. zabbix 中 mysql.sock 丢失问题
  5. python3--装饰器
  6. 关于js中的时间处理
  7. 最全面的百度地图JavaScript离线版开发
  8. gson 的简单使用
  9. 用什么方法才能测量出无线发射模块的功率呢?
  10. 面对 iPad,Surface 的键盘是必杀技