Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479

    Lettura di stringhe da un file

    Ciao a tutti!
    Io vorrei leggere delle stringhe da un file e per questo uso la fgets(). Tramite un ciclo while memorizzo la stringa e la stampo( per il momento ). Il problema e' che le stringhe dei file sono terminate da \n e la fgets appunto legge anche il \n, per evitare che me lo legga , io ho fatto cosi':

    codice:
    while( fgets( readedLine, 512, commands ) != NULL )
    {
       strncpy( newRead, readedLine, (strlen( readedLine ) -1) );
       fprintf( stderr, "%s", newRead );
    }
    Puo' andar bene o e' brutto stile?
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  2. #2

    Re: Lettura di stringhe da un file

    Originariamente inviato da Poker1
    Ciao a tutti!
    Io vorrei leggere delle stringhe da un file e per questo uso la fgets(). Tramite un ciclo while memorizzo la stringa e la stampo( per il momento ). Il problema e' che le stringhe dei file sono terminate da \n e la fgets appunto legge anche il \n, per evitare che me lo legga , io ho fatto cosi':

    codice:
    while( fgets( readedLine, 512, commands ) != NULL )
    {
       strncpy( newRead, readedLine, (strlen( readedLine ) -1) );
       fprintf( stderr, "%s", newRead );
    }
    Puo' andar bene o e' brutto stile?
    Scusa non puoi mettere solo un '\0' al posto del \n in posizione strlen(readLine-1) invece di ricopiare tutta la stringa con una inefficienza notevole?
    PS. Che mi risulti read non è un verbo regolare in inglese
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    ok hihi

    Altro problema, ogni riga per me e' formata da un numero e da una stringa, con sscanf come faccio per leggerla? io ho fatto cosi':

    sscanf( lettura, "%d %s", &num, frase );

    Soltanto che la sscanf mi torna come risultato 1 e non 2 come mi sarei aspettato. Ogni "lettura" e' appunto una frase letta con fgets() e terminata da \0 anziche' da \n.
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310

    Moderazione

    Il linguaggio anche nel titolo, come da Regolamento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    Hem sorry lo metto sempre questa volta me lo sono proprio dimenticato.
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  6. #6
    Originariamente inviato da Poker1
    ok hihi

    Altro problema, ogni riga per me e' formata da un numero e da una stringa, con sscanf come faccio per leggerla? io ho fatto cosi':

    sscanf( lettura, "%d %s", &num, frase );

    Soltanto che la sscanf mi torna come risultato 1 e non 2 come mi sarei aspettato. Ogni "lettura" e' appunto una frase letta con fgets() e terminata da \0 anziche' da \n.
    Effettivamente il risultato dovrebbe essere due, probabilmente
    la funzione non riesce ad intrpretare bene l'input.Prova a stampare a video il buffere riempito dalla fgets e vedi se effettivamente contiene i dati che ti aspetti e nelle posizioni corrispondenti ai seganposto che hai messo nella sscanf(). Se mi posso permettere di darti un'informazio esiste anche la modalità di debug nei compilatori...usandola e mettendo degli watch alle avriabili opportune questi problemi li risolvi in un attimo.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    io per scrivere uso eclipse e per compilare gcc. So che su eclipse c'e' il debugger ma il problema e' che io devo dare in input 2 file da riga di comando..e tramite eclipse...non so come fare.
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  8. #8
    Originariamente inviato da Poker1
    io per scrivere uso eclipse e per compilare gcc. So che su eclipse c'e' il debugger ma il problema e' che io devo dare in input 2 file da riga di comando..e tramite eclipse...non so come fare.
    Beh dato che stai usando eclipse e stai programmando in c probabilmente stai anche usando cdt e io quello l'ho solo provato ma non l'ho mai usato intensivamente,non ti posso aiutare quindi.Ti posso giusto dire che se come per java devi creare una configurazione di runtime in eclipse allora c'è una scheda apposta ,devi andare sul menu run
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.