Ciao a tutti.
Ho bisogno di scrivere una funzione C che effettui il confronto tra due parametri passati in ingresso e ritorni il valore 0 se questi sono uguali, ritorni un valore negativo se il primo parametro < del secondo e ritorni un valore positivo se primo parametro > secondo parametro.
Il problema è che questa stessa funzione deve poter essere richiamata sia passandogli 2 stringhe, ma anche passandogli 2 interi (in pratica non deve essere scritta per uno specifico tipo…). E’ ovvio quindi che vi sarà un altro parametro che indichi il tipo dei 2 parametri da confrontare.
Il codice che ho scritto è:
Questo funziona quando la richiamo passandogli 2 stringhe, ma non quando gli passo 2 interi…codice:int Confronta(void *elem1, void *elem2, int codiceTipo) { int x; switch(codiceTipo) { case 1: x = strcmp((char *)elem1,(char *)elem2); break; case 2: if((int )elem1 < (int )elem2) x = -1; else if((int )elem1 == (int )elem2) x = 0; else if((int )elem1 > (int )elem2) x = 1; break; } return x; }
Qualcuno saprebbe illuminarmi…?