首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >结构数组的Q排序不起作用

结构数组的Q排序不起作用
EN

Stack Overflow用户
提问于 2011-12-02 17:53:04
回答 3查看 1.7K关注 0票数 2

我尝试按char对名为results的struct run数组进行排序,但当我打印该数组时,没有排序。看看这个:

代码语言:javascript
运行
复制
struct run {
  char name[20], weekday[4], month[10];
  (And some more...)
};
typedef struct run run;

int name_compare(const void *a, const void *b) 
{
    run *run1 = *(run **)a;
    run *run2 = *(run **)b;
    return strcmp(run1->name, run2->name);
}

int count_number_of_different_persons(run results[])
{
  int i = 0;


  qsort(results, sizeof(results) / sizeof(run), sizeof(run), name_compare);

  for(i = 0; i <= 999; i++)
  {
    printf("%s\n", results[i].name);
  }
  // not done with this function yet, just return 0
  return 0;
}

上面的输出只是按最初放置顺序排列的名称列表

EN

Stack Overflow用户

回答已采纳

发布于 2011-12-02 17:57:17

代码语言:javascript
运行
复制
int count_number_of_different_persons(run results[])

这并不能真正让你在数组上使用sizeof,因为数组会衰减成指针。

代码语言:javascript
运行
复制
run *run1 = *(run **)a;

看起来也很奇怪,不是吗?

代码语言:javascript
运行
复制
run *run1 = (run*)a;
票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8354502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档