gpt4 book ai didi

c - Qsort-ing 结构的问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:31 24 4
gpt4 key购买 nike

所以我打开了一个 CSV 文件,并将其添加到一个结构中。我现在想根据它的 U 值从最低到最高对结构进行排序。我所做的有些工作,但它交换了不打算交换的值,例如 x 和 y,但仍然按 U 排序。我的结构-

typedef struct {
float xvalue;
float yvalue;
float uvalue;
float vvalue;
} flow_data;

int num_compare(const void *v1, const void *v2)
{
const flow_data *p1 = (flow_data *)v1;
const flow_data *p2 = (flow_data *)v2;
if (p1->uvalue < p2->uvalue)
return -1;
else if (p1->uvalue > p2->uvalue)
return +1;
else
return 0;
}

我在哪里运行代码 -

FILE* fp = fopen(flow_file, "r");

// Checking if the file has been read succesfully
if( fp == NULL)
{
perror("Error opening file");
exit(1);
}

char buf[500];
fgets(buf, sizeof(buf), fp); // Skip the first line

int total = 0;
flow_data d;
flow_data* dataset = NULL;

while(4 == fscanf(fp, "%f, %f, %f, %f\n", &d.xvalue, &d.yvalue, &d.uvalue, &d.vvalue))
{
dataset = realloc(dataset, sizeof(*dataset) * (total + 1));
dataset[total] = d;
total++;
}

qsort(dataset, total, sizeof(dataset), num_compare);

最佳答案

改变

qsort(dataset, total, sizeof(dataset), num_compare);

qsort(dataset, total, sizeof(flow_data), num_compare);

或者

qsort(dataset, total, sizeof(*dataset), num_compare);

因为指针的大小并不总是与结构的大小相同。

关于c - Qsort-ing 结构的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52136122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com