Вот как я сделал свою функцию сравнения для передачи в qsort ():
int charCompare(const void* ptr1, const void* ptr2)
{
char c1 = *(char*)ptr1;
char c2 = *(char*)ptr2;
return c1 - c2;
}
И это реализация:
char buffer[SIZE];
/*
* buffer filled here
*/
qsort(buffer, sizeof(buffer)/sizeof(char), sizeof(char), charCompare);
printf("%s", buffer);
Ничего не печатается.Я почти уверен, что это потому, что нулевые символы идут перед обычными символами, поскольку он работает по-другому (если я возвращаю c2-c1 вместо charCompare).Но как мне избавиться от нулевых символов, поскольку я хочу, чтобы они были в порядке от a до z, а не наоборот?