Cómo ordenar una matriz 2D de tipo char utilizando la función C ++ sort () o qsort ()

Como está utilizando C ++, sería más fácil y seguro almacenar sus cadenas como std :: string y almacenarlas en un vector std ::. La clasificación sería una simple cuestión de llamar a std :: sort en él.

Pero, si quieres hacerlo en C-way:

#include
#include
#include
#define M 10000

int main ()
{
nombres de caracteres [M] [15];
int n, i;
scanf (“% d”, & n);
para (i = 0; i <n; i ++)
scanf (“% s”, nombres [i]);
qsort (nombres, n, 15, (int (*) (const void *, const void *)) strcmp);

para (i = 0; i <n; i ++)
printf (“% s \ n”, nombres [i]);
}

Su código no funciona debido a la forma en que llama a la función qsort :

  1. el segundo argumento debe ser el tamaño de la matriz (entonces: n )
  2. El tercer argumento debe ser el tamaño de cada elemento en la matriz ( 15 )

Ahora, así es como se podría hacer de manera C ++, utilizando contenedores y STL:

#include
#include
#include
#include

int main ()
{
std :: vector nombres;
std :: string buffer;
int n, i;

std :: cin >> n;
para (i = 0; i <n; i ++)
{
std :: cin >> buffer;
nombres.push_back (búfer);
}
std :: sort (names.begin (), names.end ());

para (i = 0; i <n; i ++)
{
std :: cout << nombres [i] << std :: endl;
}
}