文件描述符和系统调用

时间:2011-09-24 15:44:50

标签: c filesystems

我正在使用读写系统调用合并k-sorted流。

在读取文件中的第一个整数并对它们进行排序后,应再次访问具有最小元素的文件。 我不知道该怎么做。我以为我可以使用像这样的结构:

struct filePointer {
int ptr;
int num;
}fptr[5];

有人可以告诉我该怎么做。

由于

1 个答案:

答案 0 :(得分:1)

虽然逐个读取整数并不是一种有效的方法,但我会尝试编写您正在寻找的解决方案。然而,这不是一个真正的实现,只是这个想法。

你的结构应该是这样的:

struct filePointer {
FILE * fp;
int num;
} fptr[k]; /* I assume k is constant, known at compile time */

您需要有一个优先级队列(http://en.wikipedia.org/wiki/Priority_queue),并且根据num确定prioities。

首先读取所有文件中的第一个数字,然后将它们插入优先级队列(pq)。

然后当pq不为空时,弹出第一个包含最小整数的元素,与pq中的其他元素相比。

将第一个元素保存的整数写入文件。

使用文件指针(fp)尝试从输入文件中读取新的整数。

如果EOF(文件结束),则不执行任何操作

否则通过将num设置为读取来将新元素插入到pq中。

当循环结束时,关闭所有文件,你将有一个新文件,其中包含输入文件中的所有元素,它将被排序。

我希望这会有所帮助。