Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Studente : Scia Massimiliano
- Classe : 3IC
- Data : 13/05/12 15:49
- Nome del file : elimina file
- */
- #include <iostream>
- #include <cmath>
- #include <ctime>
- #include <cstdlib>
- #include <cctype>
- #include <windows.h>
- #include <fstream>
- #include <time.h>
- #include <stdio.h>
- #define N 20
- using namespace std;
- struct mannaggia{
- char davide[N];
- char pappa[N];
- };//mannaggia
- bool scrivi(char* nomefile){
- int n;
- cout<<"\nQuanti nomi vuoi inserire?\n- ";
- cin>>n;
- FILE* f;
- mannaggia a_te;
- f=fopen(nomefile,"ab+");
- if(f==NULL)
- return 0;
- for(int i=0;i<n;i++){
- cout<<"\nInserisci il nome: ";
- fflush(stdin);
- cin.get(a_te.davide,N,'\n');
- fflush(stdin);
- cout<<"\nInserisci il cognome: ";
- cin.get(a_te.pappa,N,'\n');
- fflush(stdin);
- fwrite(&a_te,sizeof(mannaggia),1,f);
- }//for
- fclose(f);
- return 1;
- }//scrivi
- bool elimina(char* nomefile){
- FILE* f;
- FILE* f1;
- mannaggia m;
- f=fopen(nomefile,"rb");
- f1=fopen("temp.txt","wb");
- if(f==NULL || f1==NULL)
- return 0;
- cout<<"\nn = nome, c = cognome, p = posizione\n- ";
- char c;
- do{
- cin>>c;
- if(c!='n' && c!='p' && c!='c')
- cout<<"\nErrore.\n- ";
- }//do
- while(c!='n' && c!='p' && c!='c');
- if(c=='n'){
- char nome[N];
- cout<<"\nInserisci il nome da cercare: ";
- fflush(stdin);
- cin.get(nome,N,'\n');
- fflush(stdin);
- fread(&m,sizeof(mannaggia),1,f);
- while(!feof(f)){
- if(strcmp(nome,m.davide)!=0)
- fwrite(&m,sizeof(mannaggia),1,f1);
- fread(&m,sizeof(mannaggia),1,f);
- }//while
- }//if
- else if(c=='c'){
- char cognome[N];
- cout<<"\nInserisci il cognome da cercare: ";
- fflush(stdin);
- cin.get(cognome,N,'\n');
- fflush(stdin);
- fread(&m,sizeof(mannaggia),1,f);
- while(!feof(f)){
- if(strcmp(cognome,m.pappa)!=0)
- fwrite(&m,sizeof(mannaggia),1,f1);
- fread(&m,sizeof(mannaggia),1,f);
- }//while
- }//else-if
- else{
- int i=0,maxrec,pos;
- fseek(f,0,SEEK_END);
- maxrec=ftell(f)/sizeof(mannaggia);
- do{
- cin>>pos;
- pos--;
- if(pos>maxrec)
- cout<<"\nErrore.\n- ";
- }//do
- while(pos>maxrec);
- fseek(f,0,SEEK_SET);
- while(i<maxrec){
- fread(&m,sizeof(mannaggia),1,f);
- if(i!=pos)
- fwrite(&m,sizeof(mannaggia),1,f1);
- i++;
- }//while
- }//else
- fclose(f);
- fclose(f1);
- remove(nomefile);
- rename("temp.txt",nomefile);
- return 1;
- }//elimina
- bool visualizza(char* nomefile){
- FILE* f;
- f=fopen(nomefile,"rb+");
- if(f==NULL)
- return 0;
- mannaggia a_me;
- while(fread(&a_me,sizeof(a_me),1,f) && !feof(f))
- cout<<"\n\nNome: "<<a_me.davide<<" Cognome: "<<a_me.pappa;
- fclose(f);
- return 1;
- }//visualizza
- void end(void){
- fflush(stdin);
- cout<<"\n\nPremere Invio per continuare.";
- getchar();
- }//end
- int main(){
- char nomefile[N];
- char c;
- bool s,m,v;
- cout<<"\nIl nome del file su cui scrivere e`: ";
- fflush(stdin);
- cin.get(nomefile,N,'\n');
- fflush(stdin);
- cout<<"\n\n";
- v=visualizza(nomefile);
- s=scrivi(nomefile);
- v=visualizza(nomefile);
- cout<<"\nVuoi eliminare? s=si n=no\n- ";
- cin>>c;
- if(c=='s'){
- m=elimina(nomefile);
- v=visualizza(nomefile);
- }//if
- else
- v=visualizza(nomefile);
- end();
- return 0;
- }//main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement