0

我一直在我的代码中使用上述函数,现在发现我们不允许这样做。也许有人可以帮助实现替代功能?我只允许使用 Fgets、fgetc、fputc、fprintf、sprintf、fscanf、sscanf、rewind、stdin、stdout ......

关于 fseek,我对获取需要跳过的字符有一个大致的想法,这是一个正确的想法吗?

如果有人可以提供帮助,我会很高兴。非常感谢!

4

2 回答 2

1

显然,您只能从不支持查找但支持文件结尾的标准输入中读取。

  • 要跳过字符,您可以简单地使用 fread 将它们读入缓冲区,并忽略缓冲区中的结果。
  • 要检测文件结束,请检查 fread 的返回值。如果 fread 返回 0,则没有更多内容可读取(或发生错误)。
于 2014-04-30T07:02:37.543 回答
1

我认为这些功能是由于某些分配限制而不是技术上的限制而被禁止的?这取决于你想做什么:

  • feof()用于判断一个流是否在文件末尾
  • fseek()用于移动到该文件中的特定位置。

您可以在读取时确定流是否位于文件末尾。例如,从手册页中fscanf

EOF如果在任何转换(例如文件结束)之前发生输入失败,则返回该值。

要在不使用的情况下在文件中移动fseek(),您可以rewind()从允许的列表中使用。从手册页rewind()

rewind() 函数将流指向的流的文件位置指示符设置为文件的开头。它相当于:

       (void)fseek(stream, 0L, SEEK_SET)

从那里,您必须阅读到您想要阅读的内容seek()

于 2014-04-30T07:06:59.573 回答