1 错误报告

(1)perror函数

  void perror(char const *message)

  error是标准库的一个外部整型变量(errno.h),保存错误代码之后就会把这个信息传递给用户程序,表示操作系统的准确原因。

(2)终止执行

  void exit(int status)

    status参数返回给操作系统,用于提示程序是否完成。预定义中EXIT_SUCCESS和EXIT_FAILURE分别提示程序的终止是成功还是失败。

2 流

   绝大数流是完全缓冲的,这意味着读取和写入实际上都是从一块被称为缓冲区的内存区域来回复制数据。,用于输出流的时候写满了才会被刷新到设备或者文件中。

(1) 文本流

  文本流有些特性在不同的系统中可能不同。其中之一是文本行的最长长度。标准规定至少允许254字符。另一个可能的特性是文本行的结束方式。在MS-DS系统中,文本文件约定一个回车符加上换行符。但是UNIX只是使用一个换行符结尾。

(2) 二进制流

  打开流:

    FILE *fopen(char const *name,char const *name)

      mode:如果一个文件打开是用于读取,那么它必须原先已经存在。但是如果一个文件打开是用于写入的,如果原来已经存在,那么原来的内容会删除。如果原先不存在,那么就创建一个新文件。

    int fclose(FILE *f) 在文件关闭之前刷新缓冲区 执行成功fclose()返回0值 否则EOF

  二进制IO

    把数据写到文件效率最高的方法就是二进制写入。因为避免了数值转换位字符串过程中所涉及的开销和精度损失

    size_t fread(void *buffer,size_t size,size_t count,FILE*stream)

    size_t fwrite(void *buffer,size_T size,size_t count,FILE *stream)

      buffer是一个指向用于保存数据的内存位置的指针,size是缓冲区每个元素的字节数,count是读取或者写入的元素数。

      struct value{

        long a;

        float b;

        char c[SIZE];

      }values[ARRAY_SIZE];

      n_values=fread(values,sizeof(struct VALUE),ARRAY_SIZE,input_stream);

       刷新和定位函数

       int fflush(FILE *stream)//不管缓冲区是不是满勒,当我们需要立即进行物理写入的时候,使用它。

       long ftell

3 格式化的行IO

(1)int fscanf(FILE *stream,char const *format)

(2)int scanf(char* const *format,...)

  这个format字符串参数如果是空白字符,在处理过程中将被忽略,也就是它和输入中的零个或者多个空白字符匹配。

(3)int sscanf(char const *string,char const *format)

  sscanf处理行的技巧

    while(fgets(buffer,BUFFER_SIZE,input)!=NULL)

    {

      if(sscanf(buffer,"%d %d %d %d %d",&a,&b,&c,&d,&e)!=4)

      {}

    }

  

最新文章

  1. 你不知道的this指向
  2. (转)教你记住ASP.NET WebForm页面的生命周期
  3. zpf 获取表单等数据的用法
  4. windows下在yii中使用mongodb
  5. HDU 1721
  6. ASP.NET缓存 Cache之数据缓存
  7. 专题:Windows编译x264、SDL、faac、ffmpeg过程
  8. SpringMVC接收复杂集合参数
  9. [Linked List]Convert Sorted List to Binary Search Tree
  10. nginx filter
  11. TFTP server组态
  12. 网站常用js代码搜集
  13. 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
  14. 学习笔记TF027:卷积神经网络
  15. Process Doppelgänging
  16. 一起学习Hibernate: Hibernate01 —— Hibernate的概述与入门案例
  17. 计蒜客NOIP模拟赛(3) D1T2 信息传递
  18. 在多机器上远程执行JMeter
  19. c3p0 空指针异常 com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
  20. 直接从硬盘安装centos7网址整理

热门文章

  1. nodejs之入门
  2. 【leetcode刷题笔记】Valid Number
  3. a标签包着img事件 ie下 a标签的click事件失效
  4. hd acm 1297
  5. sqoop job 增量导入
  6. 图像处理检测方法 — SIFT和SURF
  7. node.js+express+jade系列七:富文本编辑框的使用
  8. Android退出应用最优雅的方式(改进版)
  9. Hibernate学习---第十节:Hibernate之QBC、样例查询&离线查询
  10. BEC listen and translation exercise 46