让我们使用我在下面为这个问题制作的这个基本示例代码。。。
#include <stdio.h>
#include <stdlib.h>
#define VEHICLES 5
typedef struct Car {
int year;
char *make;
char *model;
} Car;
void freeCars (Car **cars) {
for (int i = 0; i < VEHICLES; i++) free (cars[i]);
free (cars);
}
int main (int argc, char **argv) {
Car **cars = (Car**) malloc (sizeof (Car*) * VEHICLES);
for (int i = 0; i < VEHICLES; i++) {
cars [i] = (Car*) malloc (sizeof (Car));
}
// The rest of the code doesn't need to necessarily be known at this given point in time.
freeCars (cars);
printf ("Thank you!n");
return 0;
}
数据将使用格式化的fscanf语句从包含该数据的文件中读取。我将对数据进行几次排序,我需要访问原始的未排序数据。我知道我可以将信息复制到第二个数组中以保留它,或者将文件的内容完全重新读取回数组中。一种分类方法客观上比另一种好吗?
因为排序不会更改Car
s的内容,所以您可以直接复制引用。
Car **cars_cpy = malloc(sizeof(Car*) * VEHICLES);
memcpy(cars_cpy, cars, sizeof(Car*) * VEHICLES);
在对CCD_ 3进行排序时,CCD_。
如果你想保留原始文件,你必须复制它。内存复制比访问文件并读取其内容要好,这需要系统调用。
对于哪种排序算法最好的问题,你真的想去那里吗?
但为了进行比较:维基百科:排序算法
或者只使用qsort,也就是posix。