【问题标题】:How to write two strings to a file in C and sort it?如何将两个字符串写入C中的文件并对其进行排序?
【发布时间】:2016-05-29 22:36:42
【问题描述】:

我正在用 C 语言编写这个迷宫游戏。我有字符串 name[15]score[15],所以当我打印它们时,输出是“John 1000”,所以我需要在每次用户完成游戏,然后如果另一个用户获得更高或更低的分数,则对其进行排序,因此文件应该在 3 次运行游戏并完成后以这样的方式结束:

  1. 克拉克 25000
  2. 约翰 23000
  3. 路易 21000

【问题讨论】:

    标签: c string file sorting


    【解决方案1】:

    你应该做的是,每次用户完成游戏时,你加载动态分配的数组,对它进行排序,然后重写文件。

    【讨论】:

      【解决方案2】:

      首先取一个结构体s,其中char str1[]、char str2[]和struct s *next作为字段。 (用于制作链表) 因为 ' ' 和 '\n' 是这里的分隔符,所以读取第一个字符串直到我们将 ' ' 打入 s->str1[] 和第二个字符串 s->str2[] 直到我们打入 '\n' (之后malloc() 的结构体 s)

      所以当要添加新条目时,我们遍历列表。如果第一个节点值(atoi(s->str2[])小于新条目的值,则将新条目作为第一个节点。如果不是,则遍历直到链表的节点值小于新条目的值。

      所以基本上,我们在插入列表本身的同时对其进行排序(降序到值)。

      所以如果 (a)6,(b)2,(c)7,(d)8,(e)5,(f)1 是我们可以像下面这样排序的值: 1. (a)6->NULL 2. (a)6->(b)2->NULL 3. (c)7->(a)6->(b)2->NULL 4. (d)8->(c)7->(a)6->(b)2->NULL 5. (d)8->(c)7->(a)6->(e)5->(b)2->NULL 6. (d)8->(c)7->(a)6->(e)5->(b)2->(f)1->NULL

      【讨论】:

        猜你喜欢
        • 2013-01-23
        • 1970-01-01
        • 2020-05-19
        • 2014-05-18
        • 2016-01-24
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多