Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/07/2016, 03:11
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 2 meses
Puntos: 3
Respuesta: ¿Se puede optimizar el siguiente codigo?

Muy bien, siguiendo vuestros consejos estoy intentando reconducir el codigo y de momento estoy probando con esto:
Código C:
Ver original
  1. /* funcion para comparar strings de C para qsort */
  2. int cstring_cmp(const void *a, const void *b)
  3. {
  4.     const char **ia = (const char **)a;
  5.     const char **ib = (const char **)b;
  6.     return strcmp(*ia, *ib);
  7. }
  8. //---------------------------------------------------------------------------
  9.  
  10. //Se puede usar con parametros tambien
  11. int main(int argc, char* argv[])
  12. {
  13.     char pathOrigen1[SIZEMAX];
  14.     char pathOrigen2[SIZEMAX];
  15.     char pathDestino2[SIZEMAX];
  16.     char **buffer;
  17.     int largoHash,nElementos;
  18.     FILE *origen1=NULL,*origen2=NULL,*destino2=NULL;
  19.  
  20.     if(CheckParams(argc,argv,pathOrigen1,pathOrigen2,pathDestino2,&largoHash) == 0){
  21.         if((nElementos=CargarFicheroEnMemoria(origen2,pathOrigen2,&buffer)) > 0){
  22.             qsort(buffer, nElementos, sizeof(char *), cstring_cmp);
  23.         }
  24.     }
  25.     return 0;
  26. }
Me encuentro con 2 problemas:
1- En la funcion CargarFicheroEnMemoria realloc falla porque hago algo mal y no doy con la tecla.
2- En la funcion que compara las strings el problema es que no quiero comparar las dos cadenas enteras, o sea, querria comparar ambas cadenas a partir de la posicion 32 de cada una por ejemplo y tampoco se como indicarle eso. Se me ocurre ponerlo asi pero no se si es correcto y hasta que no solucione el primer problema no podre probarlo:
Código C:
Ver original
  1. /* funcion para comparar strings de C para qsort */
  2. int cstring_cmp(const void *a, const void *b)
  3. {
  4.     const char **ia = (const char **)a;
  5.     const char **ib = (const char **)b;
  6.     return strcmp(&(*ia[32]), &(*ib[32]));
  7. }