次のコードは、「不正なシーク」を出力します。
#include <stdio.h>
#include <errno.h>
#include <string.h>
int main() {
errno = 0;
getchar();
getchar();
getchar();
ftell( stdin );
printf( "%s\n", strerror(errno) );
}
これは、実行cat script | ./a.out
したときだけでなく、実行したときにも発生します./a.out
。もちろん、問題は ftell にあります。私の質問は:なぜこれが起こるのですか?stdinはシーク可能だと思います。fseek でも同じエラーが発生します。stdin がシーク可能でない場合、同じようなことを行う方法はありますか?
返信ありがとうございます。