PDA

Visualizza la versione completa : File


aldo123
14-12-2012, 20:47
Ragazzi, perché la funzione modifica di questo file non funziona?
Non riesco a capire il perché
PS: Scusate, il programma è fatto velocemente e solo per vedere se le funzioni funzionassero xD


#include <iostream> #include <stdio.h> using namespace std; struct lazio { char nome [30]; }; int menu (); void inserimento (); void modifica (); void stampa (); //------------------------------- main ---------------------------------------- int main() { int s; do { s=menu(); switch (s) { case 1: inserimento (); break; case 2: modifica (); break; case 3: stampa (); break; case 4: cout<<" "<<endl; } } while (s!=4); return 0; } int menu () { int scelta; cout<<"1 Inserimento "<<endl; cout<<"2 Modifica "<<endl; cout<<"3 Stampa "<<endl; cout<<"4 Exit "<<endl; cout<<" Scelta -> "; cin>>scelta; return scelta; } void inserimento () { FILE *fp; lazio x; fp=fopen("Lazio.dat","a+b"); //Apertura file cout<<"Nome: "; cin>>x.nome; fwrite (&x, sizeof(lazio), 1, fp); //Scrittura nel file fclose (fp);//Chiusura File } void modifica () { FILE *fp; lazio x; char y[30]; int k=0; int z=-1; cout<<"Inserire un nome: "; cin>>y; //Variabile che si confronterà con quella del file fp=fopen("Lazio.dat", "r+b"); //Apertura File while ( fread ( &x, sizeof (lazio), 1, fp ) ) //Ciclo che legge tutto il file { if ( strcmp (y,x.nome)==0 ) { cout<<"Nuovo nome: "; cin>>x.nome; fwrite (&x, sizeof(lazio), 1, fp); //Scriviamo sul File fseek(fp, z, SEEK_CUR); k++; //Dopo aver trovato il nome, incrementiamo questa variabile per il controllo se qualcosa è stato modificato o meno } } if (k==0) cout<<"Nome non trovato."<<endl; fclose (fp); } void stampa () { FILE *fp; lazio x; fp=fopen("Lazio.dat", "rb"); //Apertura File while ( fread ( &x, sizeof (lazio), 1, fp ) ) { cout<<"Nome: "<<x.nome<<endl; } fclose (fp); }

oregon
14-12-2012, 20:48
Riesci a leggere il codice nel tuo post?

MItaly
14-12-2012, 20:58
Appunto, inoltre:
- titolo non significativo;
- tag linguaggio assente;
- nessuna descrizione del problema.
Rileggi il regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887) e ricrea il thread impostandolo correttamente.

:ciauz:

Loading