gpt4 book ai didi

c - 我如何在 C 中对文本文件中的记录进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 04:16:17 25 4
gpt4 key购买 nike

我创建了一个程序,应该从用户那里获取输入并将它们写入文本文件。现在我正在制作另一个程序来从文件中读取这些记录并对其进行排序。

所以我有,例如:

User three; Test three; 30
User one; Test; 51
User two; Test two; 40

程序应该根据末尾的数字对这些记录进行排序,因此应该是:

User one; Test; 51
User two; Test two; 40
User three; Test three; 30

这是我目前的工作,基本上我创建了一个 char one 变量,它将存储从 fgets 提供的数据并打印它。两个问题: char one 有一个固定变量(255),所以如果记录将超过 255,就会出错。

第二个问题是我不知道如何处理文件的每条记录都有一个变量,我可以打印整个文件但我不知道如何根据最后一个数字比较数据,任何建议?我期待着使用冒泡排序。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {

char one[255];

FILE * fpointer = fopen("record.txt", "r");

while (!feof (fpointer) ) {
fgets(one, 255, fpointer);
printf("%s", one);
}

fclose(fpointer);
return 0;

}

最佳答案

您可以使用插入排序代替冒泡。首先,扫描整个文件并将该行的每个字段存储在数组中(您可以为此使用 fscanf())。比如,一个数组 user 存储值 User Three;User Two;User One;,另一个存储 Test 并且类似地用于第三个字段。在获得充满文件内容的数组后,您可以轻松地在最后一个字段上实现插入排序,并相应地对所有数组进行排序,然后将数组写回原始文件或另一个文件。如果您需要有关插入排序的帮助,您可以查看 this出去。对于 string comparison使用 strcmp()

希望这对您有所帮助。

编辑:要扫描 3 数组中的每一行,请执行以下操作:

fscanf("%s%s%s", &user[i], &test[i], &num[i], fpointer);

在循环中运行它,在文件读取操作之后,您将获得数组中的所有数据。

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

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