Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-06-2009, 17:23   #1
Gr1ph00n
Member
 
Iscritto dal: Oct 2006
Messaggi: 67
[C] aiuto su qsort

Salve a tutti, stavo cercando di capire come far funzionare la qsort su un array allocato dinamicamente, contenente un puntatore ad una struttura.
Ora andando a scrivere la funzione per comparare, mi sono trovato a dover fare il cast da void* alla mia struttura. Quello che devo fare è ordinare in ordine alfabetico l'array usando un dato campo delle strutture in esse contenuto.

La struttura è la seguente:
Codice:
typedef struct _rubrica 
{
    char cognome[30];
    char nome[30];
    char numero[30];
} rubrica;
Io ho scritto la seguente funzione per comparare:

Codice:

int confronta(const void *a, const void*b)
{
    rubrica *ia = (rubrica*)a;
    rubrica *ib = (rubrica*)b;
    char p[30]; 
    char q[30]; 
    strcpy(p, ia->cognome); 
    strcpy(q, ib->cognome);
    int c1 = p[0], c2 = q[0];
    if (c1 < c2)
    {
           return 1;
    }
    else if (c1 > c2)
    {
         return -1;
    }
    else 
    {
         return 0;
    }
}
usando così la qsort:

Codice:
qsort(array, elem, sizeof*array, confronta);
Ma non funziona
Chi mi potrebbe illuminare sul corretto utilizzo della qsort, per favore ?
Gr1ph00n è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2009, 20:47   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2790
Usa la strcmp -> LINK senza stare a ricopiare le stringhe che sprechi solo memoria.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2009, 09:08   #3
Gr1ph00n
Member
 
Iscritto dal: Oct 2006
Messaggi: 67
Ciao, ho risolto perchè oltre a dover usare la strcmp, dovevo eseguire meglio il cast da void a rubrica

Codice:
int confronta(const void *a,  const void*b)
{
    const rubrica *r1 = *(const rubrica *const *)a;
    const rubrica *r2 = *(const rubrica *const *)b;
    return strcmp(r1->cognome, r2->cognome);
}
Gr1ph00n è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
La NASA ha annunciato gli astronauti del...
Mondiale 2026, Lenovo unico partner tecn...
007 First Light ha venduto più di...
Harley-Davidson, svelato il prezzo itali...
PC Windows 11 in crash: ma la colpa è di...
Dopo i 'NO 5G' arrivano i 'NO FIBRA'? Ar...
Promettono un parco e costruiscono un da...
L'aeroplano supersonico ''silenzioso'' N...
Euro-Office sbugiardata da LibreOffice: ...
I 10 sconti TOP Amazon: 4 novità ...
Galaxy Z Flip 8, in Europa avrà i...
SpaceX annuncia i satelliti AI1 destinat...
Ariston DEOS 10 EVO a 103€: deumidificat...
Cina pronta a investire 295 miliardi di ...
Gli israeliani di NSO Group continuano a...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:32.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v