Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Vettore di stringhe
Forum - C/C++ - Vettore di stringhe

Avatar
zanardi84 (Normal User)
Newbie


Messaggi: 11
Iscritto: 28/02/2011

Segnala al moderatore
Postato alle 17:42
Mercoledì, 04/05/2011
Salve a tutti,

Ho l'esigenza di creare un vettore i cui elementi sono delle stringhe che vengono acquisite da un file.
Avrei pensato di costruire una matrice rettangolare char matrice [numeroStringhe][lunghezzaStringa], ma poi non so come accedere effettivamente per copiare i caratteri dal file.

Mi potete dare qualche idea?

Grazie.

PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 18:40
Mercoledì, 04/05/2011
In queste occassioni usiamo un array di puntatori!

Partendo da un doppio puntatore, (char **array; ) gli allocchiamo un numero che sará l'indice e quindi con n-1 stringhe da inserire (array = malloc( sizeof(char *); ) adesso array puo' contenere 3 stringhe. Come ultimo passaggio per ogni indice bisogna allocare un numero pari alla lunghezza della stringa che conterra' il per l'appunto la lunghezza stessa (array[0] = malloc(sizeof(char) * 5); ) fatto questo adesso possiamo inserire nell'indice 0 una parola con lunghezza massima di 4 caratteri. Dobbiamo ripetere l'ultimo passaggio per ogni stringa allocata avente come indice l'indice successivo!

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(int argc, char **argv)
  6. {
  7.         char **array = malloc (sizeof (char *));
  8.        
  9.         array[0] = malloc (sizeof (char) * 5);
  10.         strncpy (array[0], "ciao", strlen ("ciao"));
  11.         array[1] = malloc (sizeof (char) * 5);
  12.         strncpy (array[1], "a te", strlen ("a te"));
  13.         printf ("%s %s\n", array[0], array[1]);
  14.        
  15.         free (array[0]);
  16.         free (array[1]);
  17.         free (array);
  18.        
  19.          
  20.         return 0;
  21. }


Ultima modifica effettuata da Pitagora il 04/05/2011 alle 19:10
char **array = malloc (sizeof (char *) * N); dove N e' il numero di stringhe. - pierotofy - 04/05/11 20:14
io intendevo con sizeof (char *) = 4 stringhe, non l'ho detto espressamente. MA PERCHE' -1 ??? - Pitagora - 05/05/11 07:29
PM