How to sort a string with digits and letters (letters before digits) in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int compare(const void *a, const void *b) {
    char charA = *(char *)a;
    char charB = *(char *)b;

    if (isalpha(charA) && isdigit(charB)) return -1;
    if (isdigit(charA) && isalpha(charB)) return 1;
    
    return charA - charB;
}

int main() {
    char input[] = "d2c4b3a1";

    // Sort the characters using qsort and custom comparator
    qsort(input, strlen(input), sizeof(char), compare);

    printf("Custom sorted string: %s\n", input);

    return 0;
}



/*
run:

Custom sorted string: abcd1234

*/

 



answered May 26, 2025 by avibootz
...