PDA

Visualizza la versione completa : [C] Leggere dati rubrica da file


Il-predestinato
22-06-2010, 17:15
Salve a tutti, ho un piccolo problema,
dato questo file di testo :

Mario Rossi 1234567890
Luca Verdi 0987654321
Michele Gialli 1234509876

Dovrei salvare i dati negli appositi array, ovvero :
Nella prima posizione dell'array dei nomi ci sarà : "Mario",
nella seconda : "Luca", nella terza : "Michele"...
La stessa cosa per i cognomi e per i numeri di telefono,
come posso fare ?

Grazie a tutti

ignaziodeblasi
22-06-2010, 19:04
Ciao,
il procedimento da seguire è proprio quello descritto da te.. Leggi il nomee lo inserisci nel vettore dei nomi, leggi il cognome e lo inserisci nel vettore dei cognomi , leggi il numero e lo inserisci nel vettore dei numeri e cosi via..;Protesti andare a vedere la fscanf qui:http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/;potrebbe tornare utile.. prova a scrivere qualcosa e vediamo che tipo di problema hai
Ciao :zizi:

Il-predestinato
22-06-2010, 21:59
Allora, ho fatto questo programmino, così in cinque minuti,
lo compilato e non mi da errori...


#include <stdio.h>
#include <stdlib.h>
int main ()
{
char parole [9] [10];
int count = 0;
int i;
FILE *stream = fopen("parole.txt", "r");
if(stream == NULL)
{
printf("Errore nell'apertura del file");
}
else
{
while(!feof(stream))
{
fscanf(stream, "%s %s %s %s %s %s %s %s %s %s", parole[0], parole[1], parole[2], parole[3], parole[4], parole[5], parole[6], parole[7], parole[8], parole[9]);
count++;
}
}
for(i=0;i<10;i++)
{
printf("%s\n",parole[i]);
}
fclose(stream);
system("PAUSE");
}
Solo che il procedimento con la fscanf mi sembra un po' troppo lungo...

oregon
22-06-2010, 22:03
Tu devi leggere 3 valori nel ciclo (dato che tanti ce ne sono nella riga) ... altrimenti a cosa serve il ciclo?

Il-predestinato
22-06-2010, 22:12
Quindi, così è giusto ?

#include <stdio.h>
#include <stdlib.h>
int main ()
{
char Nome [2] [10];
char Cognome [2] [10];
char Telefono [2] [10];
int Count = 0;
int i;
FILE *Stream = fopen ("Contatti.txt", "r");
if (Stream == NULL)
{
printf ("Errore nell'apertura del file");
}
else
{
while(!feof (Stream))
{
fscanf(Stream, "%s %s %s", Nome [Count], Cognome [Count], Telefono [Count]);
Count++;
}
}
for (i = 0 ; i < 10 ; i++)
{
printf ("%s %s %s\n", Nome [i], Cognome [i], Telefono [i]);
}
fclose (Stream);
system ("PAUSE");
}

oregon
22-06-2010, 22:15
Scusa ... ma tu non provi a compilare ed eseguire il tuo codice?

Il-predestinato
22-06-2010, 22:24
Scusa, ho fatto...


#include <stdio.h>
#include <stdlib.h>
int main ()
{
char Nome [2] [10];
char Cognome [2] [10];
char Telefono [2] [10];
int Count = 0;
int i;
FILE *Stream = fopen ("Contatti.txt", "r");
if (Stream == NULL)
{
printf ("Errore nell'apertura del file");
}
else
{
while(!feof (Stream))
{
fscanf(Stream, "%s %s %s", Nome [Count], Cognome [Count], Telefono [Count]);
Count++;
}
}
for (i = 0 ; i < 10 ; i++)
{
printf ("%s %s %s\n", Nome [i], Cognome [i], Telefono [i]);
}
fclose (Stream);
system ("PAUSE");
}
Grazie a tutti :D :D :D

oregon
22-06-2010, 22:42
Avrai un bel po' di errori eseguendo questo codice ... non lo hai affatto provato ... :nonono:

Il-predestinato
23-06-2010, 13:55
Come dovrei fare llora ?
Mi potreste correggere il codice,
mi sono accorto che non mi stampa le cose giuste il mio metodo...

Grazie a tutti

oregon
23-06-2010, 14:24
Se dimensioni l'array con 2 righe, non ne puoi leggere 3 ...

E se ogni riga degli array è di massimo 9 caratteri+1, hai problemi a leggere stringhe più lunghe ...

Correggi, ricompila e controlla ...

Loading