文件前 3 行為文本描述,其後每行一條數據記錄。需讀取數據部分,排序後輸出。
typedef struct { int id; double value; /* 其他字段 */ } Record;
int cmp(const void *a, const void *b) {
Record *ra = (Record*)a, *rb = (Record*)b;
return (ra->value > rb->value) - (ra->value < rb->value);
}
int main() {
FILE *fp = fopen("data.txt", "r");
if (!fp) return 1;
char line[256];
// 跳過 3 行
for (int i=0; i<3 && fgets(line, sizeof(line), fp); i++);
// 統計行數
int n = 0;
while (fgets(line, sizeof(line), fp)) n++;
// 分配
Record *arr = malloc(n * sizeof(Record));
// 重讀
rewind(fp);
for (int i=0; i<3 && fgets(line, sizeof(line), fp); i++);
for (int i=0; i