Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    [c++] aprire file se solo esiste

    cn fstream, come posso fare in modo da aprire solo i file ke esistono e, nel caso in cui nn esistano, li crea...

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    bhe per controllare l'esistenza di un file...

    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;
    }
    Oppure usare un codice in C (compatibile in C++)

    codice:
    #include <stdio.h>
    
    FILE *file
    file = fopen("NomeFile.dat","w");
    Il secondo codice crea in automatico il file se questo non esiste..

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    ma FILE *file è un'oggetto o cosa?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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;

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    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;
    Io l'ho scoperto girovagando tra gli include di base. Mi piace molto fare click destro su una struttura e andare alla sua dichiarazione...

    Ma questa struct che membri ha?
    Cio è i nomi delle variabili non sono molto chiari...

  6. #6
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    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();
              }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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

  8. #8
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    a me il file nn lo crea, infatti:

    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();
              }
    mi mostra sempre l'errore...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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?

  10. #10
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    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


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.