In questo semplice programma di prova cercavo di interagire con i file e le classi, ma ho notato il bisogno di dover troncare determinate stringhe ed ho buttato giù questo codice...che durante l'inserimento sembra funzionare.
Ma provate a vedere l'OUTPUT da terminale! La visualizzazione è strana in quanto fonde la stringa ID con la stringa nome cioè:
Output finale ...che è alquanto strano
Inserisci la dimensione del vettore di fatture da creare: 1
Inserisci l'ID: IDTROPPOLUNGO
L'ID da troncare e': IDTROPPOLUNGO
L'ID troncato e': IDTRO
Inserisci il nome cliente: HtmlForum.it
Inserisci l'importo: 999.99
...// LETTURA FILE
La dimensione del file e': 1
ID:IDTROHtmlForum.it
Cliente:HtmlForum.it
Data:Oct 18 2011
Importo:999.99
Press any key to continue
Inserimento nella classe:
codice:
class fatture{
public:
char ID[5];
char cliente[100];
float importo;
char data[10];
fatture();
};
fatture::fatture(){
strcpy(ID,"x");
strcpy(cliente,"non inserito");
strcpy(data,__DATE__);
importo=0;
}
...//allocazione dinamica vettore di classi
for(int i=0;i<dim;i++){
puts("Inserisci l'ID: ");
cin.sync();
cin.getline(str,100);
cout<<"L'ID da troncare e': "<<str<<endl;
for(int j=0;j<5;j++) v[i].ID[j]=str[j];
v[i].ID[5]='\0';
cout<<"L'ID troncato e': "<<v[i].ID<<endl;
puts("Inserisci il nome cliente: ");
cin.sync();
cin.getline(v[i].cliente,100);
puts("Inserisci l'importo: ");
cin>>v[i].importo; }
Visualizzazione successiva del file:
codice:
fp=fopen("fatture.dat","rb");
fseek(fp,-sizeof(dim),SEEK_END);
fread(&dim,sizeof(dim),1,fp);
rewind(fp);
cout<<"La dimensione del file e': "<<dim<<endl;
fread(v,sizeof(fatture)*dim,1,fp);
for(i=0;i<dim;i++){
printf(" ID:%s\n Cliente:%s\n Data:%s\n Importo:%g\n",v[i].ID,v[i].cliente,v[i].data,v[i].importo);
}
grazie in anticipo per ogni eventuale aiuto