Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Problema C++ e I/O su file.

    Ciao a tutti, ho una serie di problemi che mi
    sta facendo impazzire non poco..
    Allora:

    1) Nell'I\O su file del C++ aprendo un file in modalità
    ios::ate dovrei poter preservare quello che c'è già scritto
    nel file, conservando la possibilità di modificare in una
    qualsiasi posizione del file. Ma come funziona veramente?


    #include <iostream>
    #include <fstream>
    using namespace std;

    void main()
    {
    char stringa[10] = "ciao";
    char stringa2[10];
    fstream stream("file.txt", ios::in | ios:ut | ios::ate |ios:ios::app);
    stream.write((char *) &stringa, sizeof(stringa));
    stream.read((char *) &stringa2, sizeof(stringa2));
    cout << stringa2;
    }
    Se elimino ios::ate non cambia nulla.

    COSA IMPORTANTE: Non viene prodotto alcun file "file.txt" nella directory
    dove dovrebbe comparire se non specifico ios::app.
    Se aggiungo ios::app il file compare. Perchè?

    Tra l'altro l'output su schermo consiste in "ciao seguito da una
    serie di caratteri strani anche se il file non è aperto in modalità
    binaria (e anche aprendolo in mod binaria non cambia nulla)

    RIASSUMENDO: Io ho bisogno di scrivere su file dei record (strutture intere)
    che andranno poi recuperati dal programma e stampati a video.Ho bisogno anche di
    avere accesso diretto al file per modificare i singoli record e anche
    di aggiungere in coda (o in una posizione qualsiasi) altri record.
    Come si fa?

    Grazie a tutti e scusate la prolissità.:quipy:

    Francesco

  2. #2
    ios::ate ti porta semplicemente alla fine del file, ios::app ti porta alla fine del file e ti permette di aggiungere.
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

  3. #3
    Grazie KornShell, ma i problemi purtoppo mi tormentano ancora.
    Ma ios::app scrive comunque SEMPRE all fine del file anche se io
    sposto il ptr di output con "seekp" in un altra posizione?
    Spero di no...non sarebbe logico.

    Ciao a tutti

  4. #4
    Per iniziare crea il file dove mettere i tuoi dati.
    Ti ho fatto questo come esemio da cui partire:

    codice:
    #include <iostream>  // potrebbe anche non servire
    #include <fstream> 
    using namespace std; 
     
    const char * file = "file.txt";
    int main()
    { 
    
    char stringa[10] = "ciao"; 
    
    ofstream stream(file, ios::out | ios::app); 
    stream << stringa << "\n";
    stream.close();
    
    // creato il file visualizzalo
    
    char ch;
    ifstream istream;
    istream.clear(); // non necessario per alcuni compilatori
    istream.open(file);
    	 if (istream.is_open())
    	{
    		while (istream.get(ch))
    			cout << ch;
    	}
    istream.close();
    return 0;
    }
    ciao
    ksh
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

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 © 2024 vBulletin Solutions, Inc. All rights reserved.