[c++]apertura di un file!
Inviato: ven mar 30, 2007 11:15 pm
sto sviluppando un codice in c++, la classica rubrica, ed ho un problema con l'apertura del file rubrica.txt.
ecco vi posto qui il mio codice magari mi date una mano!
la compilazione la effettuo con il code::blocks v 1.0 che sfrutta il compilatore mingw.
e al momento della compilazione ottengo sempre questo:
datemi una mano! please![/b]
ecco vi posto qui il mio codice magari mi date una mano!
- Codice: Seleziona tutto
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//rubrica implementata con la classe fstream
struct rubrica
{
char name[20];
char surn[20];
char city[20];
char tele[20];
char addr[20];
char mail[20];
};
rubrica r;
fstream f; //oggetto istanziato
int i; //variabile contatore
void print_file();
void search_bin();
void insert();
void cancella();
int main()
{
int choose, flag = 0;
char r;
//clrscr();
cout<<"Programma realizzato da COTUGNO COSIMO"<<endl;
cout<<"4^B inf"<<endl;
cout<<"Premi un tasto>>>";
getch();
do
{
//clrscr();
cout<<"Rubrica:"<<endl;
cout<<"1.Inserimento;"<<endl;
cout<<"2.Ricerca;"<<endl;
cout<<"3.Stampa;"<<endl;
cout<<"4.Cancellazione;"<<endl;
cout<<"0.Uscita."<<endl;
cout<<"Select your favourite options:\t";
cin>>choose;
switch(choose)
{
case 1:
insert();
break;
case 2:
search_bin();
break;
case 3:
print_file();
break;
case 4:
//cancella();
break;
case 0:
flag = 1;
exit(0);
break;
default:
cout<<"Error!";
break;
}
}while(!flag);
return (0);
}
void insert()
{
f.open("rubrica.txt", ios::app);
if(f.fail())
{
cout<<"\nErrore nell'apertura del file";
}
else
{
cout<<"\nInserire il nome:\t";
gets(r.name);
f.write((char*) & (r.name), sizeof(r.name));
cout<<"\nInserire il cognome:\t";
gets(r.surn);
f.write((char*) & (r.surn), sizeof(r.surn));
cout<<"\nInserire la citt…:\t";
gets(r.city);
f.write((char*) & (r.city), sizeof(r.city));
cout<<"\nInserire il telefono:\t";
gets(r.tele);
f.write((char*) & (r.tele), sizeof(r.tele));
cout<<"\nInserire l' indirizzo:\t";
gets(r.addr);
f.write((char*) & (r.addr), sizeof(r.addr));
cout<<"\nInserire l' indirizzo di posta elettronica:\n";
gets(r.mail);
f.write((char*) & (r.mail), sizeof(r.mail));
f.close();
}
}
void print_file()
{
f.open("c:\\rubrica.txt", ios::in|ios::out|ios::binary);
cout<<"\nStampa a video del file:\n";
f.clear();
while(f.read((char*) & r, sizeof(r)))
{
cout<<"nome:\t"<<r.name<<endl;
cout<<"cognome:\t"<<r.surn<<endl;
cout<<"indirizzo:\t"<<r.addr<<endl;
cout<<"citta':\t"<<r.city<<endl;
cout<<"telefono:\t"<<r.tele<<endl;
cout<<"mail:\t"<<r.mail<<endl;
getch();
}
f.close();
cout<<"\n---Fine del file---";
getch();
}
int filesize()
{
f.seekg(0, ios::end);
int n=f.tellg();
n=sizeof(rubrica);
return n;
}
void search_bin()
{
char aux[30];
f.open("c:\\rubrica.txt", ios::in|ios::out);
if(f.fail())
{
cout<<"\nFile non trovato";
getch();
}
else
{
cout<<"\nInserire Cognome:";
cin>>aux;
cin.ignore(80, '\n');
int trov=0;
int inf=0, sup=filesize()-1;
while(inf<=sup && !trov)
{
i=inf+sup/2;
f.seekg(i*sizeof(rubrica), ios::beg);
f.read((char*)&r, sizeof(r));
if(strcmp(aux, r.surn)>0)
{
inf=i+1;
}
else
{
if(strcmp(aux, r.surn)<0)
{
sup=i-1;
}
else
{
trov=1;
}
}
}
if(trov)
{
cout<<"cognome:\t"<<r.surn<<"\n";
cout<<"nome:\t"<<r.name<<"\n";
cout<<"citta':\t"<<r.city<<"\n";
cout<<"indirizzo:\t"<<r.addr<<"\n";
cout<<"telefono:\t"<<r.tele<<"\n";
cout<<"mail:\t"<<r.mail<<"\n";
}
else
{
cout<<"\nNon trovato";
}
getch();
}
}
la compilazione la effettuo con il code::blocks v 1.0 che sfrutta il compilatore mingw.
e al momento della compilazione ottengo sempre questo:
Compiling: L:\informatica\06-07\RUBRICA2.CPP
In file included from C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/backward/iostream.h:31,
from L:\informatica\06-07\RUBRICA2.CPP:1:
C:/Programmi/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++/3.4.4/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
L:\informatica\06-07\RUBRICA2.CPP:183:2: warning: no newline at end of file
Linking console executable: L:\informatica\06-07\RUBRICA2.exe
Process terminated with status 0 (0 minutes, 7 seconds)
0 errors, 2 warnings
datemi una mano! please![/b]