所以我为qsort定义了函数比较,但是出现以下错误:
1.c: In function ‘compare’:
1.c:235:7: error: request for member ‘count’ in something not a structure or union
1.c:235:17: error: request for member ‘count’ in something not a structure or union
1.c:237:12: error: request for member ‘count’ in something not a structure or union
1.c:237:23: error: request for member ‘count’ in something not a structure or union
有谁知道为什么?我的意思是,这不像我拼错了名字:<
struct word
{
char wordy[100];
int count;
};
int compare(const void* a, const void* b)
{
const struct word *ia = (const struct word *)a;
const struct word *ib = (const struct word *)b;
if(*ia.count>*ib.count)
return 1;
else if(*ia.count==*ib.count)
return 0;
else
return -1;
}
答案 0 :(得分:5)
问题在于ia
和ib
是指向const struct word
的指针。要访问结构的成员true指向它,我们使用箭头(->
)而不是点.
。
另一件事是确保在声明ia
和ib
时拼写结构名称的方式与上面声明的相同。
所以你的代码应该是:
struct word
{
char wordy[100];
int count;
};
int compare(const void* a, const void* b)
{
const struct word *ia = (const struct word *)a;
const struct word *ib = (const struct word *)b;
if(ia->count > ib->count)
return 1;
else if(ia->count == ib->count)
return 0;
else
return -1;
}
答案 1 :(得分:2)
然而,你拼错了这个名字:(
您在words
函数中引用compare
并在其外部定义word
。
[编辑]
你说it's defined as a global struct
。哪里?您在此处复制的来源没有words
的可发现定义
[/编辑]
由于您已根据原始表单对帖子进行了编辑,因此您的问题现已发布为rullof
- 您正在使用->
访问.
个项目