[C] Utilisez qsort ()

Pratique pour apprendre l'API. Si vous triez un tableau qui contient également des éléments vides dans l'ordre croissant, Le blanc vient au début.

Si vous ne voulez pas que les blancs soient comparés Triez en spécifiant la longueur du tableau.

qsort(table, 4, sizeof(table[0]), compare_char); La partie 4 de est applicable.

qsort.c


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int compare_char(const void* left, const void* right) {
	char *left_char = (char *)left;
	char *right_char = (char *)right;

	return strcmp( left_char, right_char );
}

int main() {

	int i=0;
	char table[10][20] = { 
		"123",
		"A0",
		"Z0",
		"9w3"
	};

	for(i=0; i<10; i++) {
		printf("%d %s\n", i, table[i]);
	}

	printf(" --- sort\n");
	
	qsort(table, 4, sizeof(table[0]), compare_char);
	
	for(i=0; i<10; i++) {
		printf("%d %s\n", i, table[i]);
	}
}

Ajout de qsort () 09/03/2014 correspondant au tableau de pointeurs

En réponse au commentaire indiqué, la fonction de comparaison de la destination appelée a été modifiée pour que les informations de type de l'objet soient reçues avec précision. De plus, le code a été modifié pour que la fin du tableau puisse être définie avec «NULL» et que la fin du tableau de caractères puisse être détectée.

qsort-withPointer.c


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int compare_char(const void* left, const void* right) {

    const char *left_char = *(const char **)left;
    const char *right_char = *(const char **)right;

    return strcmp( left_char, right_char );
}

int main() {

    int i=0;
    //Équivaut à placer une chaîne littérale dans un tableau
    const char* s0 = "123";
    const char* s1 = "A0";
    const char* s2 = "Z0";
    const char* s3 = "9w3";

    //Garde à la fin du tableau(NULL)Endroit
    const char* table[] = {s0, s1, s2, s3, NULL};

    printf(" --- original\n");

    // table[]Comptez les éléments de
    //Incrémentez le compteur jusqu'à ce qu'il trouve un NULL qui représente la fin du tableau
    i=0;
    while(table[i]) {
        printf("%d %s\n", i, table[i]);
        i++;
    }

    printf(" --- sort\n");

    qsort(table, i, sizeof(*table), compare_char);

    i=0;
    while(table[i]) {
        printf("%d %s\n", i, table[i]);
        i++;
    }
}

Recommended Posts

[C] Utilisez qsort ()
Utiliser des expressions régulières en C
Utilisez sérieusement l'indexeur C / C ++ le plus puissant "Rtags"
Comment utiliser Google Test en langage C
Utilisez DeepLabCut
Utiliser pycscope
Utilisez des collections.
Utilisation: Django-MySQL
Utilisez Pygments.rb
Utilisez Numpy
Utilisez pandas-ply
Utilisation des fonctions C ++ de python avec pybind11
Utilisez GitPython
Utiliser Miniconda
Comment utiliser la bibliothèque C en Python
Utilisez un langage de script pour une vie confortable en C ++
Envelopper C avec Cython pour une utilisation à partir de Python
python> utiliser c échange rapide> #if 1 // pas de remodelage
Envelopper C ++ avec Cython pour une utilisation à partir de Python