Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421

    [C++] Leggere un file di testo

    Salve
    avrei necessità di leggere da un programma c++, un file di testo contenente ad esempio i nomi di alcuni comuni con il relativo codice. In maniera particolare il programma dovrebbe funzionare così:
    1) L'utente immette il nome di un comune
    2) il programma legge il file di testo e, se trova il comune immesso dall'utente, restituisce il relativo codice.
    Visto che non ho molta dimistichezza con l'accesso ai file in c++, qualcuno di voi potrebbe aiutarmi, scrivendomi magari per grandi linee il codice?
    Grazie

  2. #2
    Ecco qua:

    http://forum.html.it/forum/showthrea...hreadid=646389

    Provata la ricerca? :sexpulp:
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  3. #3
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421
    Ok! il messaggio l'ho notato solo dopo aver inviato la mia richiesta! Comunque resta un piccolo problema, io non devo leggere l'intera riga, ne i primi caratteri, ma solo i caratteri che formano il codice. Se per esempio una riga è la seguente
    ROMA 06
    Io devo leggere solo 06 (escludendo anche l'eventuale spazio prima del numero). Come posso fare? Forse è una domanda banale, ma non mi sta venendo in mente nulla!!!!

  4. #4
    la riga la leggi interamente come prima e inserisci il contenuto in s, poi fai una cosa del tipo:

    codice:
    char* codice = strchr(s,' ')+1;
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  5. #5
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421
    Scusa la mia ignoranza, ma esattamente la funzione strchr come funziona e come si usa esattamente?

  6. #6
    Sintax: char *strchr(const char *s, int c);

    Description

    Scans a string for the first occurrence of a given character.

    strchr scans a string in the forward direction, looking for a specific character. strchr finds the first occurrence of the character c in the string s. The null-terminator is considered to be part of the string.

    For example:

    strchr(strs,0)

    returns a pointer to the terminating null character of the string strs.

    Return Value

    strchr returns a pointer to the first occurrence of the character c in s; if c does not occur in s, strchr returns null.
    Che tradotto vuol dire che ti trova la prima occorrenza del carattere c e ti restituisce un puntatore a quell'elemento.
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  7. #7
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421
    Grazie! Il codice va alla grande! Ho riunito un po' le idee in questo file cpp, dove ho corretto l'inizializzazione del puntatore s, che generava un errore di Windows, e il passaggio di parametri alla funzione strstr

    [*CODE]
    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    using namespace std;

    /* Il file di testo deve impostato in questo modo
    [Nome Città] [Codice]
    EX:
    Roma 06
    Torino 01
    */

    int main(){

    char* t= "Roma";
    char* s; // Questa è la stringa dove viene caricata ogni riga
    char* codice;
    FILE* FileIn = fopen("file.txt","r");

    while(!feof(FileIn)) {
    // Leggi una riga intera, o meglio legge 1000 caratteri se nn trova prima il terminatore di riga \n
    fgets(s,1000,FileIn);

    if (strstr(s,t)) {
    codice=strchr(s,' ')+1;
    cout << "La città è stata trovata e il relativo codice è: " << codice;
    }
    }

    cout << "\n\n\n";
    system("pause");
    return 0;
    }

    [*/CODE]

    A quanto pare il C++ ha il "pregio" di possedere diversi metodi per accedere ad un file. Per esempio io conoscevo la classe fstream con i suoi metodi read, write, get, put,.......Adesso ho scoperto i metodi della classe cstdio, che mi sono sembrati più semplici!
    Quali sono i migliori? E' solo una questione di comodità usare l'uno l'altro?

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.