Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-11-2008, 10:55   #1
Starise
Senior Member
 
L'Avatar di Starise
 
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 978
[C] Gestire puntatore ad array di puntatori.

Ciao a tutti. Allora, chiedo scusa, ma sto impazzendo con i puntatori!
Nel mio software sto gestendo una struttura di tipo puntatore ad array di puntatori a strutture che ho chiamato schede:
Codice:
typedef struct _SCHEDA
{
    int disp;                   /* marcatore */
    char Nome[LSTRING];         /* nome del contatto */
    char Cognome[LSTRING];      /* cognome del contatto */
    char Email[LSTRING];       /* email del contatto */
} SCHEDA;
La struttura è inizializzata nella main e viene così allocata dinamicamente:
Codice:
int main(int argc, char *argv[])
{
    SCHEDA **Rubrica = NULL; /* puntatore ad array di puntatori */
    int Elem = 0;
} /*endmain*/

int AllocaScheda
(   SCHEDA ***Rubrica, /* puntantore al puntatore dell'array di puntatori */
    int *elem /* numero di elementi presenti in rubrica */
)
{
    SCHEDA **Nuova;
    /* allocazione della memoria */
    Nuova = ( SCHEDA ** )realloc( *Rubrica, ( *elem+1 ) * sizeof( SCHEDA* ) );
    if( Nuova != NULL )
    {
        Nuova[*elem] = ( SCHEDA * )malloc( sizeof( SCHEDA ) );
        if( Nuova[*elem] != NULL )
        {
            *Rubrica = Nuova;
            Nuova[*elem]->disp = 0; // marca la scheda come disponibile
            (*elem)++; /* nuovo elemento aggiunto */
            return 1; /* allocazione avvenuta correttamente */
        }
    }
    else
    {
        return 0; /* errore di allocazione */
    }
}
Ora devo riempire la struttura utilizzando un file di testo:
Codice:
int CaricaFileCsv
(   SCHEDA **Rubrica,
    int *elem
)
{
    FILE *NuovoFile; /* file della rubrica */
    char NomeFile[256]; /* contiene il nome del file */
    int i; /* indice */

    NuovoFile = fopen( "rubrica.csv", "r" ); /* apertura file predefinito */

    if( NuovoFile == NULL ) /* il file non è stato aperto */
    {
        printf(" Inserire il nome di un file da caricare\n\n > ");
        LeggiScelta( &NomeFile );
        NuovoFile = fopen( NomeFile, "r" );
        if( NuovoFile == NULL ) return 0; /* errore apertura */
    }

    while( !feof( NuovoFile ) )
    {
        Alloca(&Rubrica,elem);
        fscanf( NuovoFile, "%s", Rubrica[*elem]->Nome );
        fscanf( NuovoFile, " %s", Rubrica[*elem]->Cognome );
        fscanf( NuovoFile, " %s", Rubrica[*elem]->Email );
    }
    fclose( NuovoFile ); /* chiusura del file */
    return 1;
}
Il programma impazzisce e va in crash!
__________________
Workstation: CPU AMD Ryzen 5900X @ 4900 MHz | RAM Corsair DDR4 64GB @ 3.6GHz | MoBo Gigabyte B550 AORUS Pro V2 | NVMe 1TB ~ WD Black SN850 | Storage 20 TB ~ HGST 7200RPM | PSU Fractal Ion+ 2 860W | GPU AMD Radeon RX 9070 XT | Mouse Logitech G Pro | Tastiera Logitech G915 TKL -- Audio/Video: AVR Denon X1300W 4K | Interfaccia audio Steinberg UR22 MKII | Casse 2x Klipsch RP-160M | Cuffie Sennheiser HD 650 | Mic Oktava MK 012 Black | Display LG OLED 48C1 @ 2160p 120Hz VRR FreeSync

Ultima modifica di Starise : 21-11-2008 alle 10:57.
Starise è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2008, 15:48   #2
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Ciao,

il file com'è strutturato? I campi come sono separati? (punto e virgola? Tab?).
Io leggerei prima il numero di record presenti nel file e, quindi, allocherei con malloc anziché con realloc.
Puoi linkare un file di esempio?
Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Cartello del carburante: l'AGCM ha emess...
HONOR presenta un outfit progettato con ...
CA Auto Bank e Drivalia al Salone di Tor...
Sembra un sottobicchiere, ma è un...
SPID a pagamento: Poste Italiane valuta ...
Chery lancia Lepas in Europa: il nuovo b...
Dongfeng Box, primo contatto: il perch&e...
Candidato smaschera i recruiter AI con u...
Colpo al 'pezzotto': smantellato il 70% ...
Tineco FLOOR ONE i6 Stretch a soli 299€ ...
Denodo presenta la versione 9.3 della su...
Stati Uniti, attivata la prima batteria ...
Xpeng si espande in Europa: debutto in 5...
Robot aspirapolvere in offerta su Amazon...
Rilasciato finalmente Windows ML: come c...
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: 17:45.


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