拜托,你能用qsort的字符串结构来帮助我吗? 我需要在字典中对字母词进行排序。问题是,它抛出了我的分段错误... 这是我的结构:
typedef struct {
int length;
char *data;
} Word;
typedef struct {
int length;
int index;
Word *data;
} Dictionary;
这是比较功能:
int compare(const void *a, const void *b)
{
return strcmp (((Word *)a)->data, ((Word *)b)->data);
}
这是qsort实现:
qsort(&dictionary, dictionary.index, sizeof (Word *), compare);
非常感谢你的帮助。
答案 0 :(得分:1)
您正在尝试qsort
字典结构而不是字典数据。
qsort(dictionary.data, dictionary.index, sizeof (Word *), compare);
您还应该仔细检查以确保dictionary.index
是字典的长度,而不是dictionary.length
答案 1 :(得分:0)
您应该对词典的单词列表进行排序,而不是对词典进行排序。如果length是Word列表中所有元素的数量,则应使用:
qsort(dictionary.data, dictionary.length, sizeof (dictionary.data[0]), compare);
并且,你是对的,你的比较函数是错误的,例如。
int compare(const void *a, const void *b)
{
const Word *x = a, *y =b;
return strcmp (x->data,y->data); /* if data always contains a C string */
}