Muy bien, siguiendo vuestros consejos estoy intentando reconducir el codigo y de momento estoy probando con esto:
Código C:
Ver original/* funcion para comparar strings de C para qsort */
int cstring_cmp(const void *a, const void *b)
{
const char **ia = (const char **)a;
const char **ib = (const char **)b;
}
//---------------------------------------------------------------------------
//Se puede usar con parametros tambien
int main(int argc, char* argv[])
{
char pathOrigen1[SIZEMAX];
char pathOrigen2[SIZEMAX];
char pathDestino2[SIZEMAX];
char **buffer;
int largoHash,nElementos;
FILE *origen1=NULL,*origen2=NULL,*destino2=NULL;
if(CheckParams(argc,argv,pathOrigen1,pathOrigen2,pathDestino2,&largoHash) == 0){
if((nElementos=CargarFicheroEnMemoria(origen2,pathOrigen2,&buffer)) > 0){
qsort(buffer
, nElementos
, sizeof(char *), cstring_cmp
); }
}
return 0;
}
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/* funcion para comparar strings de C para qsort */
int cstring_cmp(const void *a, const void *b)
{
const char **ia = (const char **)a;
const char **ib = (const char **)b;
return strcmp(&(*ia
[32]), &(*ib
[32])); }