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

    [C++] Commenti e lettura file

    Salve a tutti.

    Devo leggere dei dati numerici da un file.

    Un esempio di file è il seguente

    codice:
    /* commenti
    vari da eliminare */
    123
    123 432 543
    ...
    Ho dei dati numerici da leggere, ma nell'header ho un commento in stile C.
    Come posso fare per saltare questo commento (che ha lunghezza arbitraria), e puntare direttaemente al primo dato?

    Daniele
    Non abbiamo ereditato il mondo dai nostri padri.
    L'abbiamo preso in prestito dai nostri figli.

  2. #2
    Alla prima occorrenza della sequenza di caratteri "/*", inizi a cercare la sequenza che chiude il blocco-commento "*/" ignorando tutti i caratteri in esso racchiusi
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    codice:
    char* jump_ccomment(const char *buffer){
    
       if(buffer == NULL)
          return NULL;
    
       if(*buffer == '/' && *(buffer + 1) == '*'){
    
          while(*buffer != '*' && *(buffer + 1) != '/')
             buffer++;
    
       }
    
       return buffer;
    
    }
    Non ho provato


  4. #4
    presupponi che i dati sia formattati correttamente, io aggiungerei un controllo sulla fine buffer ed il sollevamento di una eccezione nel caso si verificasse questo fatto.
    codice:
    ...
    while ( *buffer && strncmp (buffer, "*/", 2) ) buffer++;
    ...
    ...
    if ( !*buffer ) throw ....
    ...
    ciao
    sergio

  5. #5
    Ragazzi, scusate il ritardo, ma causa braccio rotto in questi giorni non ho fatto una cippa

    Le soluzioni vanno bene: l'unica cosa è che non avrei a che fare con char* ma con stringhe e buffer.

    Credete che una soluzione come questa

    codice:
    ifstream infile;
    infile.open("file.txt");
    
    do
    {
        infile >> cd;
    } while (cd.compare("*/") != 0);
    
    /* Lettura dati */
    Possa andare bene?

    Daniele
    Non abbiamo ereditato il mondo dai nostri padri.
    L'abbiamo preso in prestito dai nostri figli.

  6. #6
    No ma dico, ma che ci vuole ?
    Metti tutto in una stringa e poi passi l'indirizzo alla mia funzione con gli accorgimenti di sergio.
    Rincominci a leggere dal nuovo punto.


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.