Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - nunovo problema... con system()
Forum - C/C++ - nunovo problema... con system()

Avatar
bip (Normal User)
Rookie


Messaggi: 36
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 13:39
Lunedì, 05/01/2009
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:


%0edf
PM Quote
Avatar
iGuLy (Ex-Member)
Pro


Messaggi: 66
Iscritto: 17/05/2007

Segnala al moderatore
Postato alle 13:46
Lunedì, 05/01/2009
Ripulisci il buffer stdin con:
Codice sorgente - presumibilmente Plain Text

  1. 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ì:
Codice sorgente - presumibilmente C/C++

  1. void attendi()
  2. {
  3.   while (getchar() != '\n');
  4.   cout << "Premi un tasto...";
  5.   getchar();
  6.  
  7.   return;
  8. }


Ultima modifica effettuata da iGuLy il 05/01/2009 alle 13:49
PM Quote