[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]El Miércoles, 15 octubre, 2003, a las 04:42 PM, Arturo Espinosa-Aldama escribió:
Bueno, en el ejemplo que mandaste, puede sustituir en el compare el return por el strcmp:From: Victor Antonio Gonz·lez Ch·vez <00458115 en academ01 cem itesm mx> To: Arturo Espinosa-Aldama <arturoea en hotmail com> CC: ayuda en linux org mx Subject: Re: [Ayuda] Ayuda para programar ls y ps Date: Wed, 15 Oct 2003 10:46:51 -0600Bueno gracias a todos por los comentarios, me han ayudado, pero ahora tengo un problema, voy apenas con el comando ls, como le hago para ordenar la salida o bueno los arvhivos que se imprimen.Si quieres ordenar, vas a tener que primero hacer un arreglo de apuntadores a dirent y vaciar todas las entradas del directorio alli y usando qsort (man 3 qsort) ordenar el arreglo. Luego ya iteras sobre el arreglo, en vez de hacerlo directamente conforme leias con readdir.qsort recibe un argumento que es un apuntador a funcion, el cual es llamado con dos apuntadores a tus estructuras (dos dirents) y debe devolver -1, 0 o 1, segun si el primer elemento es "menor" que el segundo, si son iguales, o si es "mayor".En http://www.cplusplus.com/ref/cstdlib/qsort.html encontre un ejemplo del uso de qsort.Saludos, Arturo
/* qsort example */
#include <stdio.h>
#include <stdlib.h>
char values[6][3] = { "yi", "io", "ha", "al", "om" , "ze" };
int compare (const char * a, const char * b)
{
return strcmp( a , b );
}
int main ()
{
int n;
qsort (values, 6, sizeof(char)*3, compare);
for (n=0; n<6; n++)
{
printf ("%s ",values[n]);
}
printf("\n");
return 0;
}
aqui hay otro ejemplo:
http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/CLibQSort.html
aunque claro, hay que primero averiguar el máximo nombre de cadena =).
Saludos!
_______________________________________________
Ayuda mailing list
Ayuda en linux org mx
Para salir de la lista: http://mail.linux.org.mx/mailman/listinfo/ayuda/