|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Napoli
Messaggi: 981
|
[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;
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 */
}
}
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;
}
__________________
Workstation: CPU AMD Ryzen 5900X @ 4950 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 | B&W Px7 S3 | Mic Oktava MK 012 Black | Display LG OLED 48" @ 2160p 120Hz FreeSync Premium Ultima modifica di Starise : 21-11-2008 alle 11:57. |
|
|
|
|
|
#2 |
|
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? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:30.


















