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++ - salvare e caricare vettore su file di testo
Forum - C/C++ - salvare e caricare vettore su file di testo

Avatar
damag (Normal User)
Newbie


Messaggi: 9
Iscritto: 20/08/2011

Segnala al moderatore
Postato alle 17:13
Domenica, 28/08/2011
vorrei sapere come salvare un vettore su file di testo e vorrei anche sapere come rileggere questo vettore
help  :idea:

PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 17:31
Domenica, 28/08/2011
usa la funzione fwrite per scrivere il vettore. Poi fai un rewind e successivamente invoca la funzione fread, per poter leggere! Per maggiori informazioni http://www.cplusplus.com/reference/clibrary/cstdio/

cia scusa se ti chiedo di piu ma sono novizio del c non mi potresti fare vedere qualche codice - damag - 28/08/11 17:33
PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 18:28
Domenica, 28/08/2011
Certo eccoti l'esempio:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2.  
  3. int main(int argc, char **argv)
  4. {
  5.         int i;
  6.         int vettoreScritto[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  7.         int vettoreLetto[ sizeof( vettoreScritto ) ];
  8.        
  9.         FILE *testo = fopen( "nomefile.txt", "w+b" );
  10.        
  11.         if ( !testo )
  12.                 return 1;
  13.        
  14.         /* scrivo il vettore nel file */
  15.         fwrite( vettoreScritto, sizeof ( int ), sizeof( vettoreScritto ), testo );
  16.        
  17.         /* azzero l'indice */
  18.         rewind( testo );
  19.        
  20.         /* leggo il vettore dal file */
  21.         fread( vettoreLetto, sizeof( int ), sizeof( vettoreLetto ), testo );
  22.        
  23.         /* stampa il vattore */
  24.         for (i = 0; i < sizeof( vettoreScritto ) / sizeof( int ); i++ )
  25.         {
  26.                 printf( "%d\n", vettoreLetto[i] );
  27.         }
  28.  
  29.         printf( "Premere invio per terminare ... " );
  30.         getchar();
  31.         fclose( testo );
  32.         return 0;
  33. }



Ho usato un vettore di interi, ma è facilmente modificabile, in base al tipo da usare: float, char... :k:

non mi v - damag - 29/08/11 11:50
impossibile a me funziona! Certo che se ti aspetti caratteri sensati nel file, devi cambiare strada! - Pitagora - 29/08/11 20:19
PM
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 21:19
Martedì, 30/08/2011
Leggere e scrivere vettori su file di testo non è molto comodo e conviene utilizzare il metodo esposto da @Pitagora che utilizza però file binari.
Su un file .txt la procedura è molto semplice:

Codice sorgente - presumibilmente C/C++

  1. int i;
  2. int v[10];
  3.  
  4. //Modifichi v
  5.  
  6. for(i=0; i<10; i++)
  7.     {
  8.          fprintf(FilePointer,"%d",v[i]);
  9.     }



Per leggerlo invece basta usare lo stesso procedimento ma usando la funzione fscanf naturalmente.

Ti consiglio nel caso non l'avessi già fatto di studiarti i file binari, molto utili in situazioni del genere...

hemmmm, perchè non è conveniente? - Pitagora - 30/08/11 23:18
Dove ho scritto che non è conveniente? - comina8 - 31/08/11 15:23
PM