cn fstream, come posso fare in modo da aprire solo i file ke esistono e, nel caso in cui nn esistano, li crea...
cn fstream, come posso fare in modo da aprire solo i file ke esistono e, nel caso in cui nn esistano, li crea...
bhe per controllare l'esistenza di un file...
Oppure usare un codice in C (compatibile in C++)codice:#include <fstream.h> #include <iostream> using namespace std; int main() { fstream File ("nomefile.dat",ios::in); if (!File) { cerr <<"Impossibile aprire il file" <<endl; return 1; } else return 0; }
Il secondo codice crea in automatico il file se questo non esiste..codice:#include <stdio.h> FILE *file file = fopen("NomeFile.dat","w");
ma FILE *file è un'oggetto o cosa?
E' il puntatore ad una struttura FILE ...
O meglio e' il puntatore alla struttura _iobuf e FILE e' un nuovo tipo di dati generato a partire da tale struttura ...
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
Io l'ho scoperto girovagando tra gli include di base. Mi piace molto fare click destro su una struttura e andare alla sua dichiarazione...Originariamente inviato da oregon
E' il puntatore ad una struttura FILE ...
O meglio e' il puntatore alla struttura _iobuf e FILE e' un nuovo tipo di dati generato a partire da tale struttura ...
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
Ma questa struct che membri ha?
Cio è i nomi delle variabili non sono molto chiari...
xke nn mi crea il file?
codice:void Save() { fstream salva; Anagrafe tmp; salva.open("file.dat",ios::out|ios::binary); for (int i=0;i<puntatore;i++) { tmp=db[i]; salva.write((char *)&tmp,sizeof(Anagrafe)); } salva.close(); }
Il file lo crea ... ( l'ho fatto creare nella root di C: ) ...
ovviamente vuoto perche' non conosco nulla della classe Anagrafe ne' ho a disposizione la variabile "puntatore" ..
Ovviamente, dato che stai salvando un oggetto (di classe Anagrafe), e dato il thread sul salvataggio degli oggetti, mi auguro che nella classe non siano definiti dei puntatori ...
P.S. Come e' finita questa discussione ... ?
http://forum.html.it/forum/showthrea...hreadid=908266
a me il file nn lo crea, infatti:
mi mostra sempre l'errore...codice:void Load() { fstream carica; int i=0; carica.open("file.dat",ios::in|ios::binary); if (!carica) { ; } else { cout<<"*** ATTENZIONE: NON E' STATO TROVATO L'ARCHIVIO ***"; WAIT; } puntatore=i; carica.close(); }
Beh, veramente e'
if (!carica)
{
cout<<"*** ATTENZIONE: NON E' STATO TROVATO L'ARCHIVIO ***";
}
else
{
// leggi il file
}
ma poi, scusa, hai controllato se il file c'e' "fisicamente" nella cartella?
Originariamente inviato da oregon
Beh, veramente e'
if (!carica)
{
cout<<"*** ATTENZIONE: NON E' STATO TROVATO L'ARCHIVIO ***";
}
else
{
// leggi il file
}
ma poi, scusa, hai controllato se il file c'e' "fisicamente" nella cartella?![]()
![]()
![]()
![]()
cazzo cazzo cazzo...il file lo crea e io controllavo la cartella, ma mi sn fatto fregare dal fatto che installando nero è cambiata l'icona per i file .dat
![]()
![]()
![]()
![]()
![]()