View Full Version : [C] Prendere dati formattati da un File
ZioFetecchia
22nd July 2004, 17:44
Vediamo se qualcuno mi potrĂ dare una mano in questo mio semplicissimo quesito:
mettiamo caso io ho un file di testo .txt formattato in questo modo
Bacigalupo Enrico 30
Mariotti Davide 18
Meri Elissa 30
Genovese Sebastiano 19
E devo mettere i dati in una struttura dati dinamica
come devo fare ?
E se poi li devo stampare ?
Grazie mille in c++ meglio ma anche in C va bene
Grazie ancora
dejan70
22nd July 2004, 17:55
ciao zietto, io proverei con excel: dati - carica dati esterni - importa file di testo e come delimitatore ci metti lo spazio...
spero di non aver detto una ca***ta
ciao dal dejan
ZioFetecchia
22nd July 2004, 18:02
dejan e che devo fare un programma che mi prenda dei dati formattati e me li metta in strutture dinamiche
e non posso farle in excel in un compito di C/C++ :D (magari)
Grazie comunque per la gentilezza
dejan70
22nd July 2004, 18:47
acc. scusa :rosso:
ZioFetecchia
22nd July 2004, 19:37
figurati :D
Sei l'unico che ha risposto :unsure:
dai maghi del C rispondete
Emanem
22nd July 2004, 19:59
Se il formato del file e' di testo puoi fare cosi':
// definizione struttura dinamica
typedef struct _myDynStruct
{
char nome[64],
cognome[64];
int voto;
// puntatore al prossimo elemento
struct _myDynStruct *next;
} myDynStruct, *LPmyDynStruct;
// creo un puntatore all'inizio della lista...
LPmyDynStruct begList = NULL,
// ... alla fine della lista
endList = NULL;
FILE *fp = NULL;
fp = fopen("file.txt", "r");
if (fp)
{
char tmp_nome[64],
tmp_cognome[64];
int tmp_voto;
// fintanto che scandisco 3 elementi da ogni riga...
while(3 == fscanf(fp, "%s %s %i\n", tmp_nome, tmp_cognome, &tmp_voto))
{
// crea un elemento temporaneo
LPmyDynStruct tmpEl = (LPmyDynStruct)malloc(sizeof(myDynStruct));
// Se ho creato l'elemento nuovo
// lo riempio
if (tmpEl)
{
strcpy(tmpEl->nome, tmp_nome);
strcpy(tmpEl->cognome, tmp_cognome);
tmpEl->voto = tmp_voto;
tmpEl->next = NULL;
// se ho gia' allocato l'inizio della lista passo avnti, senno' entro in questo if
if (!begList)
{
begList = tmpEl;
endList = tmpEl;
}
// vuol dire che ho almeno 1 elemento
else
{
// in endList terro' sempre l'ultimo elemento
endList->next = tmpEl;
endList = endList->next;
}
}
}
fclose(fp);
}
// Qui fuori se tutto e' andato bene avro' nelle variabile
// begList il puntatore al primo elemento della lista
// ed in endList il ptr all'ultimo.
// Ricordo che la lista e' navigabile solo dal primo all'ultimo
// elemento e non viceversa.
/********************
Ciao e Buon
Coding, Emanem
********************/
ZioFetecchia
22nd July 2004, 20:26
grazie mille
domani lo provo per bene
:D
e se funge, :vittoria: :vittoria:
:allah: :allah: mi inchino a l'unico programmatore sine bacum
vBulletin® v3.7.0, Copyright ©2000-2009, Jelsoft Enterprises Ltd.