使用文件描述符在C中读取文件

时间:2012-11-23 00:06:47

标签: c file file-descriptor

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

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

如果我使用例如fscanf(),它可以使用简单的字符串工作正常,我可以根据需要收回整行。所以我的问题是:

是否有像fscanf()这样的函数可以使用文件描述符而不是文件指针调用?

2 个答案:

答案 0 :(得分:3)

当您说“必须使用read()”时,我无法判断您是否根据open()提供的文件描述符或对某种赋值的限制来了解情况。

如果您有文件描述符,但对fscanf()和朋友更熟悉,请使用fdopen()从您的fd获取FILE *并继续使用stdio。

在内部,它将read()等函数用于缓冲区,然后在用fscanf()和朋友阅读时处理这些缓冲区。

答案 1 :(得分:2)

你可以做的是一次读一个字符,直到你读完整行,并检测'/ n'。由于这是家庭作业,我不会为你写的。

但有一些事情要警告。

  1. 您需要检查EOF,否则,您可能会陷入无限循环。
  2. 您应该声明一些读取字符的缓冲区,然后将其复制到缓冲区中。不知道你的输入是什么,我不能建议一个大小,除了说家庭作业,[256]可能就足够了。
  3. 你需要确保你的缓冲区不会溢出,即使你已经超过它的长度。
  4. 继续阅读,直至找到'/ n'字符。然后处理您创建的行,然后启动下一行。