gpt4 book ai didi

c - 在 C 中对二进制文件中的记录进行排序

转载 作者:行者123 更新时间:2023-11-30 16:57:07 25 4
gpt4 key购买 nike

我正在开发一个程序,该程序使用 read()、write()、open() 和 close() 来处理文件。我们得到一个要排序的二进制记录文件。

我的困惑是从阅读步骤开始的。根据我的理解, read 将文件内容放入字符数组中。因此,如果我没有完全关闭,这意味着每个索引都包含一个字节的信息。每条记录都用空格分隔。我将按每个包含的前四个字节对它们进行排序。

我知道记录的格式,但数据的范围是可变的。幸运的是,记录之间只有空格,单个记录内没有空格。该结构是一个整数作为文件头,表示有多少条记录。每个 key 是 4 个字节,后面跟着 4 个字节表示有多少数据,后面跟着的数据全部不带空格。数据大小不包含空间。

C 库中的排序例程是否可以将这些数据作为字符而不是整数处理?另外,我不知道从哪里开始分离和重新排列记录。我是否必须将每个提取到记录结构数组中并从那里排序?

我是 C 语言新手,在网上找不到太多使用这些特定函数的信息。这是一份家庭作业,但截止日期已过;我只是想加快我的理解。

最佳答案

如果文件是二进制的,正如您所写的那样 - 那么记录不会被任何东西分隔,您只需要知道每个记录的大小(所有记录可能具有相同的大小)。

为了排序,可以使用标准库函数,例如 qsort 。该函数使用您提供的回调,因此它可以处理任何类型的数据。 qsort返回后,您将重新排列数据。

Would I have to extract each into an array of record structs and sort from there?

是的,对于少量记录(如学生作业),这是一个不错的选择。

关于c - 在 C 中对二进制文件中的记录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39682323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com