Oppure

Loading
05/01/09 12:39
bip
codice:

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<string>
#define dim 1000
using namespace std;

int c,s=0,z=0;
char buff[dim], buffer[dim], o;
FILE *pFile, *file;

//creo la struttura di memoria
struct data{
char giorno[20];
char mese[20];
int anno[4];
};

struct utente{
char codicefiscale[16];
int matricola;
char nome[20];
char via[20];
char localita[25];
char provincia[2];
struct data nato;
} user[20];


//menu scelta
void sceltamenu(){
cout<<"con 0 inserisci dati in memoria\n";
cout<<"con 1 leggi dati in memeria \n";
cout<<"con 2 salva dati \n";
cout<<"con 3 leggi dati salvati \n";
cout<<"esci\n";
cin>>c;
}

//inserimento dati utente


//menu di stampa
int stampamenu(){
switch (c) {
case 0:cout<<"\ndati inseriti\n";
break;
case 1:cout<<"\ndati letti dalla memoria\n";
break;
case 2:cout<<"\nsalvati\n";
break;
case 3:cout<<"\nsalvati\n";
break;
default:cout<<"\nerror\n";
break;
}
return c;
}


//manipolazione file

/* funzione scrittura */
int scrivimem(){
do{
cout<<"\nnome\n";
cin.getline (user[z].nome,dim);
cout<<"\nvia\n";
cin.getline (user[z].via,dim);
cout<<"\nlocalità\n";
cin.getline (user[z].localita,dim);
cout<<"\nsigla provincia\n";
cin.getline (user[z].provincia,dim);
cout<<"\ngiorno\n";
cin.getline (user[z].nato.giorno,dim);
cout<<"\nmese\n";
cin.getline (user[z].nato.mese,dim);
cout<<"\nanno\n";
// cin.getline (user[z].nato.anno,dim); chidere
cout<<"\ncodice fiscale\n";
cin.getline (user[z].codicefiscale,dim);
cout<<"termina inserimonto dati: con 'S stoppare e con 'C continuare''\n";
cin>>o;
++z;
}while(o != 's'&& z < 2);
return 0;
}


/*leggi dati in memoria*/
int leggidatimem(){
for(int x=0;x<z;x++){
cout<<"\nnome\n"<<user[x].nome;
cout<<"\nvia\n"<<user[x].via;
cout<<"\nlocalità\n"<<user[x].localita;
cout<<"\nsigla provincia\n"<<user[x].provincia;
cout<<"\ngiorno\n"<<user[x].nato.giorno;
cout<<"\nmese\n"<<user[x].nato.mese;
cout<<"\nanno\n"<<user[x].nato.anno;
cout<<"\ncodice fiscale\n"<<user[x].codicefiscale;
};
return 0;
}

/*scrivi nel file*/
int scrivifile(){
pFile=fopen("myfile.txt","wb";);
for(int y=0;y<=dim;y++){
fwrite("\nnome\n", sizeof(char), dim, pFile);
fwrite(&user[y].nome, sizeof(char), dim, pFile);
fwrite("\nvia\n", sizeof(char), dim, pFile);
fwrite(&user[y].via, sizeof(char), dim, pFile);
fwrite("\nlocalità\n", sizeof(char), dim, pFile);
fwrite(&user[y].localita, sizeof(char), dim, pFile);
fwrite("\nsigla provincia\n", sizeof(char), dim, pFile);
fwrite(&user[y].provincia, sizeof(char), dim, pFile);
fwrite("\ngiorno\n", sizeof(char), dim, pFile);
fwrite(&user[y].nato.giorno, sizeof(char), dim, pFile);
fwrite("\nmese\n", sizeof(char), dim, pFile);
fwrite(&user[y].nato.mese, sizeof(char), dim, pFile);
fwrite("\nanno\n", sizeof(char), dim, pFile);
fwrite(&user[y].nato.anno, sizeof(char), dim, pFile);
fwrite("\ncodice fiscale\n", sizeof(char), dim, pFile);
fwrite(&user[y].codicefiscale, sizeof(char), dim, pFile);
};
fclose (pFile);
fflush(stdin);
return 0;
}

/* leggere da file */
int leggidafile(){
file=fopen("myfile.txt","r";);
while (fgets(buff,dim,file)){
puts(buff);
}
return 0;
}


main(){

sceltamenu();

switch(c){
case 0:scrivimem(),stampamenu();
break;
case 1:leggidatimem(),stampamenu();
break;
case 2:scrivifile(),stampamenu();
break;
case 3:leggidafile(),stampamenu();
break;
default:"qualcosa non torna";
break;
}

system("pause";);
}

sicome devo mettere i valori in memoria e una olta fatto questo vorrei decidere se leggerli o salvarli direttamente, c'è un sistema per evitare che mi venga fuori la scritta premere un tasto per continuare e non si termini il programma ma mi permetta di inserire un nuovo valore...:ot:
aaa
05/01/09 12:46
iGuLy
Ripulisci il buffer stdin con:
fflush(sdtin);

Ho letto (non mi ricordo dove) che la fflush da problemi quindi se vuoi prova a cercarti la __fpurge();
Comunque in alternativa a questa potresti farti una funzione personalizzata molto semplice.
Per esempio così:
void attendi()
{
  while (getchar() != '\n');
  cout << "Premi un tasto...";
  getchar();
  
  return;
}
Ultima modifica effettuata da iGuLy 05/01/09 12:49
aaa