Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136

    [C++] - Lettura di testo da file.txt

    Come posso leggere il testo contenuto in un file, senza saperne la dimensione(righe, parole)

    io apro il file cosi :

    codice:
    FILE	*file;
    file = fopen("file.txt","r+t");
    if (file != NULL) {
        leggi tutto il testo e salvalo in un buffer 
    }
    fclose(file);
    Qualcuno mi puo dire il codice da utilizzare per salvare il testo?
    come faccio a determinare la lunghezza del buffer, se non conosco il testo ?


    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Puoi provare un codice del genere
    codice:
     
       char *buffer = new char[500];
       int filesize=0, bytes;
       FILE *file = fopen("file.txt","r");
       while (feof(file))
        {
           filesize+= fread(buffer,sizeof(char),500,file);
        }
    
    cout <<"Grandezza del file = " << filesize;
     delet[] buffer;
    Alla fine però in questo modo abbiamo comunque utilizzato la C runtime library...avendo a disposizione il C++ si possono utilizzare la classe fstream.

    Se lavori su Win32 ci sono poi pratiche funzioni (GetAttributeFileEx) che ritornano lo stesso parametro che cerchi
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136
    lavoro con visual c++, è un progetto MFC.


    in che senso posso utilizzare la fstream ?


    con buff[500] se il testo ho piu di 500 caratteri come faccio?
    i caratteri successivi vengono persi..

    possi usare una CString buff; ?

  4. #4
    Ciao Emi,

    se usi MFC le cose sono ancora più semplici.

    Nell'esempio che segue, apriamo un file di testo utilizzando la classe MFC "StdioFile":

    codice:
    	CStdioFile f;
    	CString strLinea;
    	CString strFile;
    
    	strFile = _T("C:\\MiaDirectory\\NomeFile.txt");
    
    	f.Open(strFile, CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate);
    	while ( f.ReadString(strLinea) )
             {
                 //Facciamo qualcosa con la riga appena letta
    	    AfxMessageBox(strLinea);
    	}
    	f.Close();
    Come vedi, puoi utilizzare CString per leggere i record a lunghezza variabile, senza bisogno di conoscerne in anticipo la dimensione.

    Il file viene aperto in lettura-scrittura (opzione CFile::modeReadWrite).
    CFile::modeCreate|CFile::modeNoTruncate permette di creare il file se non esiste; se esiste, invece, viene semplicemente aperto.


  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136
    Perfetto!

    Grazie mille

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.