[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Lo que yo haría es, en vez de imprimir el nombre o los datos de cada archivo conforme los vayas recibiendo, los vayas guardando. Tal vez de primera lo más tentador sería guardarlos en un arreglo, pero esto tiene las desventajas de que tiene una longitud fija y que reordenar sus datos puede ser un dolor de cabeza. Creo que lo más fácil sería meterlos a una bonita lista ligada, y que la función encargada de la inserción vaya imponiéndoles el órden, de manera que cuando termines de armar tu lista de elementos baste imprimirla para que te los despliegue ordenados. Y, claro, con un poquito de juego adicional, podrías especificar por medio de parámetros qué tipo de ordenamiento llevar a cabo, eligiendo una diferente función para hacerlo.
Gunnar tiene razon respecto a la dificultad de la longitud de los arreglos, pero puedes simplemente usar malloc y realloc para crear tu arreglo. Lo que Gunnar recomienda es el "insertion sort", que tiene eficiencia n cuadrada. qsort tiene algo asi como n log n, y por eso esta en la biblioteca standard. En general, si quieres ordenar algo y no es ultra-vital la velocidad, aprovecha el qsort de la libc.
Saludos, Arturo size = 10 arr = malloc (sizeof (dirent *), size) i = 0 while (ent = readdir (dir)) { arr [i] = ent; i++; if i == size { size *= 2 arr = realloc (sizeof (dirent *), size) } }qsort (arr, i, sizeof (dirent *), funcion) /* nota que use i (el numero de elementos). size es el tamanio para alloquear de memoria, pero eso era solo para el realloc */
. . . free (arr) _________________________________________________________________The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail
_______________________________________________ Ayuda mailing list Ayuda en linux org mx Para salir de la lista: http://mail.linux.org.mx/mailman/listinfo/ayuda/