Q有什么区别fgetpos/fsetpos和ftell/fseek?
什么是fgetpos和fsetpos有什么好处?
A ftell和fseek使用类型long int来表示文件中的偏移量(位置),因此可能仅限于能够表示在long int中的偏移量。(类型long int不保证能容纳大于 2**31-1 的值,从而将最大偏移量限制在 2 GB)。较新的fgetpos和fsetpos函数则使用特殊的 typedef,fpos_t来表示偏移量。此 typedef 背后的类型,如果选择得当,可以表示任意大的偏移量,因此fgetpos和fsetpos可用于处理任意大的文件。fgetpos和fsetpos还可以记录与多字节流相关的状态。另请参阅问题 1.4。
参考:K&R2 第 B1.6 节,第 248 页
ISO 第 7.9.1 节,第 7.9.9.1、7.9.9.3 节
H&S 第 15.5 节,第 252 页