[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Ayuda] Ayuda para programar ls y ps




El Miércoles, 15 octubre, 2003, a las 04:42 PM, Arturo Espinosa-Aldama escribió:

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 -0600

Bueno 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

Bueno, en el ejemplo que mandaste, puede sustituir en el compare el return por el strcmp:

/* 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/



[Hilos de Discusión] [Fecha] [Tema] [Autor]