Advertisement
tegusta

modifica file

May 13th, 2012
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.42 KB | None | 0 0
  1. /*
  2. Studente : Scia Massimiliano
  3. Classe : 3IC
  4. Data : 13/05/12 15:17
  5. Nome del file : modifica file
  6. */
  7.  
  8. #include <iostream>
  9. #include <cmath>
  10. #include <ctime>
  11. #include <cstdlib>
  12. #include <cctype>
  13. #include <windows.h>
  14. #include <fstream>
  15. #include <time.h>
  16. #include <stdio.h>
  17. #define N 20
  18.  
  19. using namespace std;
  20.  
  21. struct mannaggia{
  22.     char davide[N];
  23.     char pappa[N];
  24. };//mannaggia
  25.  
  26. bool scrivi(char* nomefile){
  27.      int n;
  28.      cout<<"\nQuanti nomi vuoi inserire?\n- ";
  29.      cin>>n;
  30.      FILE* f;
  31.      mannaggia a_te;
  32.      f=fopen(nomefile,"ab+");
  33.      if(f==NULL)
  34.          return 0;
  35.      for(int i=0;i<n;i++){
  36.          cout<<"\nInserisci il nome: ";
  37.          fflush(stdin);
  38.          cin.get(a_te.davide,N,'\n');
  39.          fflush(stdin);
  40.          cout<<"\nInserisci il cognome: ";
  41.          cin.get(a_te.pappa,N,'\n');
  42.          fflush(stdin);
  43.          fwrite(&a_te,sizeof(mannaggia),1,f);
  44.      }//for
  45.      fclose(f);
  46.      return 1;
  47. }//scrivi
  48.  
  49. bool modifica(char* nomefile){
  50.     FILE* f;
  51.     f=fopen(nomefile,"rb+");
  52.     if(f==NULL)
  53.         return 0;
  54.     mannaggia ai_sandali_di_loreggia;
  55.     int pos;
  56.     cout<<"\nPer nome (n), cognome (c) o posizione (p) ? \n- ";
  57.     char c;
  58.     cin>>c;
  59.     if(c=='n'){
  60.         char bau[N];
  61.         cout<<"\nInserisci il nome da cercare: ";
  62.         fflush(stdin);
  63.         cin.get(bau,N,'\n');
  64.         fflush(stdin);
  65.         while(!(feof(f))){
  66.             fread(&ai_sandali_di_loreggia,sizeof(mannaggia),1,f);
  67.             if(strcmp(bau,ai_sandali_di_loreggia.davide)==0){
  68.                 cout<<"\nInserisci il nuovo nome: ";
  69.                 fflush(stdin);
  70.                 cin.get(ai_sandali_di_loreggia.davide,N,'\n');
  71.                 fflush(stdin);
  72.                 cout<<"\nInserisci il nuovo cognome: ";
  73.                 cin.get(ai_sandali_di_loreggia.pappa,N,'\n');
  74.                 fflush(stdin);
  75.                 fseek(f,-sizeof(ai_sandali_di_loreggia),SEEK_CUR);
  76.                 fwrite(&ai_sandali_di_loreggia,sizeof(mannaggia),1,f);
  77.                 break;
  78.             }//if
  79.         }//while
  80.     }//if
  81.     else if(c=='c'){
  82.         char bau[N];
  83.         cout<<"\nInserisci il cognome da cercare: ";
  84.         fflush(stdin);
  85.         cin.get(bau,N,'\n');
  86.         fflush(stdin);
  87.         while(!(feof(f))){
  88.             fread(&ai_sandali_di_loreggia,sizeof(mannaggia),1,f);
  89.             if(strcmp(bau,ai_sandali_di_loreggia.pappa)==0){
  90.                 cout<<"\nInserisci il nuovo nome: ";
  91.                 fflush(stdin);
  92.                 cin.get(ai_sandali_di_loreggia.davide,N,'\n');
  93.                 fflush(stdin);
  94.                 cout<<"\nInserisci il nuovo cognome: ";
  95.                 cin.get(ai_sandali_di_loreggia.pappa,N,'\n');
  96.                 fflush(stdin);
  97.                 fseek(f,-sizeof(ai_sandali_di_loreggia),SEEK_CUR);
  98.                 fwrite(&ai_sandali_di_loreggia,sizeof(mannaggia),1,f);
  99.                 break;
  100.             }//if
  101.         }//while
  102.     }//else-if
  103.     else{
  104.         cout<<"\nPosizione in cui cercare (maggiore di zero): ";
  105.         cin>>pos;
  106.         pos--;
  107.         int i=0,maxrec;
  108.         fseek(f,0,SEEK_END);
  109.         maxrec=ftell(f)/sizeof(mannaggia);
  110.         cout<<"\nInserisci il nuovo nome: ";
  111.         fflush(stdin);
  112.         cin.get(ai_sandali_di_loreggia.davide,N,'\n');
  113.         fflush(stdin);
  114.         cout<<"\nInserisci il nuovo cognome: ";
  115.         cin.get(ai_sandali_di_loreggia.pappa,N,'\n');
  116.         fflush(stdin);
  117.         fseek(f,(pos)*sizeof(mannaggia),SEEK_SET);
  118.         fwrite(&ai_sandali_di_loreggia,sizeof(mannaggia),1,f);
  119.     }//else
  120. }//modifica
  121.  
  122.  
  123. bool visualizza(char* nomefile){
  124.     FILE* f;
  125.     f=fopen(nomefile,"rb+");
  126.     if(f==NULL)
  127.         return 0;
  128.     mannaggia a_me;
  129.     while(fread(&a_me,sizeof(a_me),1,f) && !feof(f))
  130.         cout<<"\n\nNome: "<<a_me.davide<<" Cognome: "<<a_me.pappa;
  131.     fclose(f);
  132.     return 1;
  133. }//visualizza
  134.  
  135.  
  136. void end(void){
  137.     fflush(stdin);
  138.     cout<<"\n\nPremere Invio per continuare.";
  139.     getchar();
  140. }//end
  141.  
  142. int main(){
  143.     char nomefile[N];
  144.     char c;
  145.     bool s,m,v;
  146.     cout<<"\nIl nome del file su cui scrivere e`: ";
  147.     fflush(stdin);
  148.     cin.get(nomefile,N,'\n');
  149.     fflush(stdin);
  150.     s=scrivi(nomefile);
  151.     v=visualizza(nomefile);
  152.     cout<<"\nVuoi modificare? s=si n=no\n- ";
  153.     cin>>c;
  154.     if(c=='s'){
  155.         m=modifica(nomefile);
  156.         v=visualizza(nomefile);
  157.     }//if
  158.     else
  159.          v=visualizza(nomefile);
  160.     end();
  161.     return 0;
  162. }//main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement