3

我想使用文件描述符从文件中读取。由于分配规则,我不能使用它的名字。

我通过调用获得它open,它工作正常。此刻我知道我必须使用该read()函数才能从中读取。我的问题是该函数需要读取的字节数read()作为参数,并且我想每次从文件中读取一整行,所以我不知道要读取多少字节。

例如fscanf(),如果我使用它,它可以很好地处理一个简单的字符串,我可以根据需要收回整行。所以我的问题是:

有没有fscanf()可以用文件描述符而不是文件指针调用的函数?

4

2 回答 2

4

当您说“必须使用read()”时,我无法判断这是否是您对给定文件描述符open()或对某种分配的限制的情况的理解。

如果你有一个文件描述符,但你更喜欢fscanf()和朋友,使用从你的 fdfdopen()中获取 aFILE *并继续使用 stdio。

在内部,它使用像read()缓冲区这样的函数,然后在您fscanf()与朋友阅读它们时处理这些缓冲区。

于 2012-11-23T00:14:21.023 回答
2

你可以做的是一次读一个字符,直到你读完整行,然后检测到'/n'。因为这是作业,我就不给你写了。

然而,有几件事需要注意。

  1. 您需要检查 EOF,否则,您可能会陷入无限循环。
  2. 您应该声明一些读取字符的缓冲区,然后将其复制到缓冲区中。不知道您的输入是什么,我无法建议大小,除了说对于家庭作业,[256] 可能就足够了。
  3. 你需要确保你的缓冲区不会溢出,即使你确实超过了它的长度。
  4. 继续阅读,直到找到“/n”字符。然后处理您创建的行,并开始下一个。
于 2012-11-23T00:14:29.307 回答