如何从文件中按字母顺序对信息进行排序?

时间:2015-01-03 21:36:31

标签: c sorting

我有一个很大的代码,但我需要一个部分的帮助。我创建了这个函数,它从我的.txt文件中获取了人们的信息。

如果我想按字母顺序排序(并且使用他们的ID,即123456早于132456 - 这可能是单独的和可选的),该如何做?

sortRecord()
{
    int b;
int c;
FILE *fp;
fp = fopen("suspectfile.txt", "r");
if (fp) 
    while ((c = getc(fp)) != EOF)
        putchar(c);


    fclose(fp);
}

2 个答案:

答案 0 :(得分:1)

您现在编写的代码将打开文件,一次读取一个字符,然后将这些字符打印回控制台。如果您只需要按排序顺序打印文件内容而不需要稍后操作文件内容,则可以考虑使用system命令运行命令行工具sort ,这是为你做的。例如:

system("sort suspectfile.txt");

这将为您处理一切,但它实际上不会将数据加载到您的程序中。

如果您需要将数据加载到程序中然后对其进行排序,最好的办法是将文件内容加载到数组中(我会将这些详细信息留给您,因为您知道文件格式比我这样做然后使用qsort函数将数据按升序排列。 qsort需要您提供一个数组来排序,数组中每个元素的大小,元素的数量和比较函数。这是您可以使用它的一种方式:

/* String comparison function for use by qsort. The parameters will be
 * void*'s that actually point at char*'s.
 */
int string_comparator(const void* one, const void* two) {
    return strcmp(*(char**)one, *(char**)two);
}

char** file_contents_array = /* ... load the file ... */
qsort(file_contents_array, /* number of elements in the array */,
      sizeof(char *), string_comparator);

您现在可以按顺序排列文件内容,并可以随意使用它们。

希望这有帮助!

答案 1 :(得分:0)

qsort()alphasort()结合使用。请注意程序运行的语言环境 - 它会影响这些函数生成的顺序。