PDA

Visualizza la versione completa : [c++] Rubrica, errore nel salvataggio file


Etidr3k
19-03-2008, 17:16
Ragazzi..salve..
Mi servirebbe una mano.
St cercando di fare una semplice rubrica il c++ ma ho problemi sul fatto di salvare i dati, e non riesco a capire l'errore..per costesia potreste aiutarmi?
Il problema st sul "case1"..help me.. :(


#include<iostream>
#include<conio.h>
#include<string.h>
#include<fstream>
using namespace std;

struct data{
int giorno;
int mese;
int anno;
};

struct dati{
char nome[30];
char cognome[30];
char numero[30];
char indirizzo[30];
data dn;
};

void main(){
int scelta, a;
dati dati1;
dati dati2;
cout<<"*RUBBRICA*\n";
cout<<"----------------------------------------\n\n";
cout<<"1.Inserisci un nuovo contatto:\n";
cout<<"2.Visualizza il contatto\n";
cout<<" Cosa scegli: ";
cin>>scelta;
switch (scelta){
case 1:{
cout<<"Inserisci il nome:\n";
cin>>dati1.nome;
cout<<"Inserisci il cognome:\n";
cin>>dati1.cognome;
cout<<"Inseriesci in numero:\n";
cin>>dati1.numero;
cout<<"Inserisci l'indirizzo e-mail:\n";
cin>>dati1.indirizzo;
cout<<"Ora inserisci la data di nascita:\n";
cout<<"Inserisci il giorno:\n";
cin>>dati1.dn.giorno;
cout<<"Inserisci il mese:\n";
cin>>dati1.dn.mese;
cout<<"Iserisci l'anno:\n";
cin>>dati1.dn.anno;

struct dati1;
ofstream creafile("file.txt");
creafile << a;
creafile.close();

char b[] = "...";
ifstream aprifile ("file.txt");
aprifile >> b;
cout << b << " !" << endl;
}

case 2:{
cout<<"\n Nome: "<<dati1.nome;
cout<<"\n Cognome: "<<dati1.cognome;
cout<<"\n Numero di telefono: "<<dati1.numero;
cout<<"\n Indirizzo e-mail: "<<dati1.indirizzo;
cout<<"\n Data di nascita: "<<dati1.dn.giorno<<dati1.dn.mese<<dati1.dn.anno;
}
}
}

oregon
19-03-2008, 17:19
Di quale errore parli?

Perche' salvi la variabile a nel file?

Etidr3k
19-03-2008, 17:24
Ora mi spiego meglio...con questo programma volevo fare in modo ke, dopo aver inserito i dati, questi, andassero a salvarsi su un file ke, alla successiva apertura del programma, fossero ancora in memoria.
P.S:ho messo la variabile "a" xk non sapevo cosa mettere :S

oregon
19-03-2008, 17:40
Originariamente inviato da Etidr3k
Ora mi spiego meglio...con questo programma volevo fare in modo ke, dopo aver inserito i dati, questi, andassero a salvarsi su un file ke, alla successiva apertura del programma, fossero ancora in memoria.

Beh ... non e' che tu abbia detto tanto ...



P.S:ho messo la variabile "a" xk non sapevo cosa mettere :S

Ottimo ... :)

A parte gli scherzi, se devi salvare dei dati, almeno utilizza le variabili che hai usato per l'input ...

Metflar
19-03-2008, 17:44
Originariamente inviato da Etidr3k
Ragazzi..salve..
Mi servirebbe una mano.
St cercando di fare una semplice rubrica il c++ ma ho problemi sul fatto di salvare i dati, e non riesco a capire l'errore..per costesia potreste aiutarmi?
Il problema st sul "case1"..help me.. :(


#include<iostream>
#include<conio.h>
#include<string.h>
#include<fstream>
using namespace std;

struct data{
int giorno;
int mese;
int anno;
};

struct dati{
char nome[30];
char cognome[30];
char numero[30];
char indirizzo[30];
data dn;
};

void main(){
int scelta, a;
dati dati1;
dati dati2;
cout<<"*RUBBRICA*\n";
cout<<"----------------------------------------\n\n";
cout<<"1.Inserisci un nuovo contatto:\n";
cout<<"2.Visualizza il contatto\n";
cout<<" Cosa scegli: ";
cin>>scelta;
switch (scelta){
case 1:{
cout<<"Inserisci il nome:\n";
cin>>dati1.nome;
cout<<"Inserisci il cognome:\n";
cin>>dati1.cognome;
cout<<"Inseriesci in numero:\n";
cin>>dati1.numero;
cout<<"Inserisci l'indirizzo e-mail:\n";
cin>>dati1.indirizzo;
cout<<"Ora inserisci la data di nascita:\n";
cout<<"Inserisci il giorno:\n";
cin>>dati1.dn.giorno;
cout<<"Inserisci il mese:\n";
cin>>dati1.dn.mese;
cout<<"Iserisci l'anno:\n";
cin>>dati1.dn.anno;

struct dati1;
ofstream creafile("file.txt");
creafile << a;
creafile.close();

char b[] = "...";
ifstream aprifile ("file.txt");
aprifile >> b;
cout << b << " !" << endl;
}

case 2:{
cout<<"\n Nome: "<<dati1.nome;
cout<<"\n Cognome: "<<dati1.cognome;
cout<<"\n Numero di telefono: "<<dati1.numero;
cout<<"\n Indirizzo e-mail: "<<dati1.indirizzo;
cout<<"\n Data di nascita: "<<dati1.dn.giorno<<dati1.dn.mese<<dati1.dn.anno;
}
}
}

nn faccio c++ da tempo ma sicuro ke sia giusto utilizzare le parentesi graffe nello switch?
nn si usava cos:


switch(scelta){
case 1:
....
break;

}

Etidr3k
19-03-2008, 18:25
oregon secondo te come dovrei fare? xk non capisco dove sbaglio..cio..ho capito il fatto della var a ke non serve..per non sop ke altro mettere...cio..non ho capito molto..non ke potresti riordinare la confusione ke ho fatto sul"salvare i dati"? Cosi ci capiamo meglio..please..:(
Xk ho dato diverse occhiate in giro per il web ma nessuna spiega bene cm fare...

Metflar penso sia uguale..almeno..quando compilo il programma non mi da errore di nessun genere...

XWolverineX
19-03-2008, 18:27
Se nello switch si creano delle variabili, necessario racchiudere la condizione tra 2 paretesi graffe.

Etidr3k
19-03-2008, 19:53
Si ok...e quindi ke dovrei fare?? :S

XWolverineX
19-03-2008, 20:28
che errore ti da?
Potrebbe essere questo

case 1:{
Metti uno spazio tra : e {

Etidr3k
20-03-2008, 08:50
ok, ma per il fatto di aprire/salvare/chiudere il "file.txt" tutto giusto?
Xk quando io compilo il programma, questo funziona, ma alla fine dell'inserimento dati, se vado a vedere il "file.txt" salvato, all'interno mi ritrovo una cosa piuttosto assurda..del tipo "-875..."..xk?

Loading