c - 排序贪婪高分(文件 I/O)

标签 c sorting file-io

我正在用 C 实现 Greed(greedjs.com)。我如何将这些数据从最高到最低排序,以及如何附加仅符合前十名玩家资格的分数?

Here's它看起来像什么。

这是我到目前为止的代码:

void high_scores() {
    int c;
    char player_name[256];
    FILE * fhigh_score;
    fhigh_score = fopen("HIGH SCORES.txt", "a");
    if (fhigh_score == NULL) {
        printf("Error");
        exit(1);
   }
   printf("Your Name:\t");
   fgets(player_name, 256, stdin);
   player_name[strlen(player_name) - 1] = 0;
   fprintf(fhigh_score, "\t%s\t%d\n", player_name, SCORE);
   fclose(fhigh_score);

   fhigh_score = fopen("HIGH SCORES.txt", "r");
   if (fhigh_score == NULL) {
       printf("Error");
       exit(1);
   }
   else if (fhigh_score) {
       while ((c = getc(fhigh_score)) != EOF)   //print file to terminal
       putchar(c);
       fclose(fhigh_score);
   }
}

最佳答案

您需要的是一个数据结构来存储玩家及其得分。例如:

struct Player {
    const char* name;
    int score;
};

然后您可以创建一个此类结构的数组,将文件中的所有玩家数据放在那里,然后应用qsort()对其进行排序。您还需要一个比较函数来按得分对玩家进行排序,以提供给 qsort。

关于c - 排序贪婪高分(文件 I/O),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30426810/

相关文章:

c - 面试Hello World讲解

list - 通过索引按升序对 Applescript 列表进行排序

c# - 如何以不区分大小写的方式对 DataView 进行排序?

sql - 为什么在外部归并排序中第一遍没有输出页面

c - 在 C 中读取大缓冲区 - 高效技术

c# - 如何在一个方法调用中创建文件及其父目录?

创建僵尸进程

c - 用C语言读取32位二进制

c++ - 只有最后一行被保存在 C++ 的文本文件中

c - 将节点插入链表期间出现段错误