如何在C语言中通过查看行中的一个属性对文件的行进行排序?

在我的例子中,一行包括8个属性(字符串和整数),这些属性用逗号隔开 (,). 我根据逗号将这些属性分割开来,我有一个条件。打印文件中与用户输入的国家名称(属性之一)相同的行。 所以我用以下方法来写 strcasecmp (比较两个字符串的大小写不敏感).但我想把行按升序放入输出文件,因为城市名称是另一个属性。

if (strcasecmp(enteredCountryName, CountryNameInTheFile) == 0) {
    fputs(line, outpufile);
}

但我想把这些行按升序排列到输出文件中 因为城市名称是另一个属性. 我经常在网上看到类似的例子。

for (i = 0; i < n - 1; i++) {
    for (j = i + 1; j < n; j++) {
        if (strcmp(name[i], name[j]) > 0) {
            strcpy(temp, name[i]);
            strcpy(name[i], name[j]);
            strcpy(name[j], temp);
        }
    }
}

但由于我是个新手,我无法将其应用到我的代码中。你能告诉我如何适应它吗?或者,如果你有不同的建议,根据我说的条件进行排序,我很乐意听到它。非常感谢您。

解决方案:

在c语言中,最简单的排序方法是使用内置的 qsort 功能,并为您需要排序的项目提供一个比较器。

该函数的定义可以在这里在线查看(含示例)———————————————–。https:/en.cppreference.comwcalgorithmqsort

在你的代码中,排序选项看起来像这样

qsort(name, n, strcmp)

然后你可以使用任何你想要的方式将它们写入你的文件。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何在python中动态地读取用空格分隔的输入,最好是在List上读取不同类型的数据?

2022-4-20 12:08:43

解决方案

_tkinter.TclError: 预期的浮点数却得到了""

2022-4-20 12:08:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索