zoukankan      html  css  js  c++  java
  • C语言和指针-回顾18-I/O函数

    I/O函数以3种基本形式处理数据:单个字符,文本行,二进制数据。

    fscanf()

    int fseek(FILE *stream, long offset, int from)

    在二进制流中,

    从SEEK_END进行定位可能不被支持。

    在文本流中,

    如果from是SEEK_CUR或者SEEK_END,offset必须是0。

    如果from是SEEK_SET,offset必须是同一个流ftell()返回值。

    文本流有这些限制的原因是:

    由于文本流所执行的行末字符映射,文本文件的字节数肯能和程序写入的字节数不同。

     

    fclose()

    如果对fclose()的返回值不进行检查,会出现什么问题呢?

    如果fclose()出错,那很有可能你写的程序有问题,比如说传给fclose()的参数是不对的。这样有可能会出现,真正fopen的流没有释放掉。

    每个进程能够打开的流的个数是有限的,如果一直打开流但是关闭流一直失败的话,后面这个进程就没有办法再打开流了。

    sprintf()

    sprintf(buffer, "%d %c %x"); 如果整数的长度是2个字节。那么buffer应该多大?

    %d : 两个字节整数的范围-32768~ 32767,或者0 ~ 65535,所以最长需要6个字节(-32768)

    %c : 一个字节

    %x : FFFF, 两个字节

    两个空格:两个字节

    结尾NUL : 一个字节

    6 + 1 + 4 + 2 + 1 = 14个字节

     

    fopen()

    不希望文件原先的内容丢失,也希望能够写入文件的任何位置,那应该r+模式打开文件。

  • 相关阅读:
    ableview中,如何加载自定义cell? 如何改变选中某一行的颜色(或不显示颜色)
    NSRunLoop
    知识点
    类别、延展、继承
    换个地方,说点儿真话,谈点儿人生中的循环定理
    ios-UIViewController的生命周期
    ios-UIView的一些常用的方法
    ios-Frame和bounds的区别
    ios-AppDelegate常用的方法
    ios取沙盒(sandbox)中的路径
  • 原文地址:https://www.cnblogs.com/wuyuntana/p/14975223.html
Copyright © 2011-2022 走看看