我有一个很大的代码,但我需要一个部分的帮助。我创建了这个函数,它从我的.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);
}
答案 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()
结合使用。请注意程序运行的语言环境 - 它会影响这些函数生成的顺序。