当前位置:嗨网首页>书籍在线阅读

21-可移植性

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

13.5.3 可移植性

理论上, fseek()ftell() 应该符合UNIX模型。但是,不同系统存在着差异,有时确实无法做到与UNIX模型一致。因此,ANSI对这些函数降低了要求。下面是一些限制。

  • 在二进制模式中,实现不必支持 SEEK_END 模式。因此无法保证程序清单13.4的可移植性。移植性更高的方法是逐字节读取整个文件直到文件末尾。C预处理器的条件编译指令(第16章介绍)提供了一种系统方法来处理这种情况。
  • 在文本模式中,只有以下调用能保证其相应的行为。

| 函数调用 | 效果 | | :----- | :----- | :----- | :----- | | fseek(file, 0L, SEEK_SET) | 定位至文件开始处 | | fseek(file, 0L, SEEK_CUR) | 保持当前位置不动 | | fseek(file, 0L, SEEK_END) | 定位至文件结尾 | | fseek(file,ftell-pos, SEEK_SET) | 到距文件开始处 ftell-pos 的位置, | ftell-posftell() 的返回值 |

不过,许多常见的环境都支持更多的行为。