对于
whence
(或 POSIX 中的 fseek
)的 lseek
参数,一些调用 C lib 的语言假定 SEEK_SET、SEEK_CUR SEEK_END 分别为 0、1、2,例如 gfortran、Nim [^ py].
[^py]:虽然Python的seek专门集中`SEEK_*的值,但CPython确实将0,1,2映射到C lib的内部值。
我查过 C 和 POSIX 专业化,两者都没有专注于
SEEK_*
的值。
在代码中,我想知道在哪个操作系统和C编译器中,以下代码的输出不是
012
:
#include <stdio.h>
int main(){
printf("%d%d%d\n", SEEK_SET, SEEK_CUR, SEEK_END);
}
如果您必须在调用
fseek()
时使用0、1、2,请使用该数字作为数组索引。#include <stdio.h>
const int whence [] = { SEEK_SET, SEEK_CUR, SEEK_END };
int result = fseek(stream, 0, whence[2]); // Go to the end