fgetc+ungetc。也许可以像这样:int fpeek(FILE *stream) { int c; c = fgetc(stream); ungetc(c, stream); return c; }
你需要自己实现它。使用fread读取下一个字符,使用fseek返回到之前读取的位置。 编辑: int fsneaky(FILE *stream, int8_t *pBuff, int sz) { sz = fread(pBuff, 1, sz, stream) fseek(pFile, -sz, SEEK_CUR); return(sz); }
ungetc(EOF, foo)
是定义良好的("如果 c 的值等于宏 EOF 的值,则操作失败且输入流保持不变")。 - ChristophEOF
可以是任何负整数。 - dreamlax