|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Sep 2002
Messaggi: 1025
|
[c] lettura da file
Salve ho una domanda.
io ho una tabella di questo tipo in un file .txt: Codice:
6 0 15 3 1 1 22 2 14 6 2 3 12 4 3 1 12 1 0 Come faccio? in particolare ho tre problemi: a) non riesco a far funzionare atoi b) non riesco a mettere due numeri vicini come un sol numero c) non riesco ad allocare le tabelle. In particolare per il punto c: 1) come faccio a fare un malloc (o calloc) che a volte aumenta le colonne, a volte le righe? 2) come faccio a riconoscere il return per la nuova riga in modo da fare una nuova riga nella matrice? con iscntrl() ? grazie mille siete degli angeli! |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
In C non c'è modo di conoscere la dimensione di un array allocato dinamicamente .... cioè la devi sapere tu a priori in qualche modo. Non è come in Java dove puoi fare array.length. Quindi la prima questione è quella di stabilire come gestire la matrice bidimensionale "jagged". Una soluzione potrebbe essere questa: Codice:
typedef struct
{
int dim;
int *valori;
} RIGA;
typedef struct
{
int dim;
RIGA *righe;
} MATRICE;
1) Apri il file in lettura (funzione fopen). 2) Leggi il file riga per riga (funzione fgets). 3) Devi spezzare la stringa usando lo spazio come delimitatore per ottenere delle stringhe relative ad ogni numero (funzione strtok). 4) Per ogni stringa che contiene un numero la converti in numero (funzione atoi). 5) Ogni numero lo inserisci nell'array 'valori' della struttura RIGA. Nota che l'array lo devi allocare e riallocare man mano che ottieni dei numeri (funzione malloc/realloc). 6) Ogni riga di interi rappresentata da una struttura RIGA la inserisci nell'array 'righe' della struttura MATRICE. Anche qui l'array 'righe' è da allocare/riallocare man mano che si aggiungono righe. Alla fine chiudi il file e in una MATRICE hai l'array jagged. Ti conviene scrivere il codice in modo da avere più funzioni dedicate alla gestione di questa matrice, ad esempio: una funzione per allocare la MATRICE e popolarla di valori da un file, una funzione per fare una free di tutti i dati nella matrice, una funzione magari per stampare i dati della matrice, ecc...
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Probabilmente anche una lista di liste ti potrebbe essere utile...
Ogni lista contiene una riga e la lista di liste contiene le varie righe... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:07.



















