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

How to sort information alphabetically from a file?

我有一个很大的代码,但我需要一部分帮助。我做了这个功能,它从我的 .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);
}

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

您现在编写的代码将打开文件,一次读取一个字符,然后将这些字符打印回控制台。如果您只需要按排序顺序打印文件内容,而不需要稍后操作文件内容,您可以考虑使用 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);

您现在已按排序顺序排列了文件内容,可以对它们做任何您想做的事情。

希望对您有所帮助!