1
qsort
을 사용하여 알파벳 문자열을 알파벳순으로 정렬하려고합니다. 지금은 내 문자열의 순서를 뒤집을 것 같습니다.qsort 문자열 순서를 뒤집을 때
printf("unsorted %s\n", string);
qsort(string, strlen(string), sizeof(char), compare);
printf("sorted %s\n", string);
문자열은 "ACBD"문자열입니다. 두 번째 printf는이를 "DBCA"로 표시합니다. 내 비교 함수는, 내가 꽤 멍청한 짓을하고 있어요 확신
compare(const void *a1, const void *b1){
const int *a2 = a1;
const int *b2 = b1;
if(*a2 == *b2){
return 0;
}
else{
if(*a2 < *b2){
return -1;
}
else{
return 1;
}
}
}
하지만 어떤 도움에 감사드립니다.
편집 : 문자열 당신은 문자 비교를 수행 할
감사합니다! 모두 고정 – user2655377
@ user2655377 참고로 비교 함수를 'int cmp (const void * a1, const void * b1) {return * (char *) a1 - * (char *) b1; }' – SheetJS
'const char c1 = * (const char *) a1, c2 = * (const char *) b1;'은 포인터의 직접 참조를 직접적으로 고려해야한다. 언제나 그렇듯이, 비교는'return (c1 c2;'. –
unwind