我正在编写将传递给qsort的比较函数,并且我无法按字母顺序对字符串进行排序.
typedef struct{ char title[30]; //other irrelevant variables } Album; compare(Album * l, Album * r){ if(l->title > r->title){ return -1; } if(l->title == r->title){ return 0; } else{ return 1; } } qsort(albums, num_albums, sizeof(Album), compare);
我知道这可能是错的,但我不确定如何按字母顺序比较char指针.有人能帮这个老家伙吗?
裸数组名称的计算结果为第一个数组元素的地址.您需要比较字符串内容,而不是字符串地址.碰巧有一个很好的功能 - strcmp
:
compare(Album * l, Album * r) { return strcmp(l->title, r->title); }