Lettura di un file e stampa a video

di il
10 risposte

Lettura di un file e stampa a video

Salve a tutti volevo creare un programma che leggesse il contenuto di un file e lo stampasse a video
allora ho scritto qualcosina e ho riscontrato diversi problemi siccome sono alle basi con il c ma su internet ho trovato il programma che volevo creare(l'ho modificato un pò) e funziona ma non ho capito alcune cose:

#include <stdio.h> 
#include <stdlib.h>
int main()
{ 
   char testo[100];
   FILE *file; 
   file=fopen("testo.txt", "r"); 
   while (fscanf(file,"%s",testo)>0) 
   {
     printf("%s\n\n", testo); 
   }
   fclose(file); 
   system("pause");
   return 0;
}

Non ho capito il significato del >0 in questo pezzo:

while (fscanf(file,"%s",testo)>0) 

10 Risposte

  • Re: Lettura di un file e stampa a video

    Disinstalla dev-c++ e installa code::block o visual studio 2010.

    per la fscanf restituisce quanti caratteri hai letto e quindi fintanto che legge esegue il ciclo.
    comunque ti da un link cosi da poterti studiare la funzione,sarebbe opportuno anche comprarsi un buon libro dove studiae il linguaggio.
  • Re: Lettura di un file e stampa a video

    Lo so per ora uso quello che ho di scuola comunque non ho detto che uso dev-c++
  • Re: Lettura di un file e stampa a video

    E cosa usi?
    vs no perchè manca "stdafx.h",c::b no perchè hai implementato la system.
    Forse sei sotto linux?
  • Re: Lettura di un file e stampa a video

    Però secondo me questo metodo che usi per stampare a video il contenuto del file non può funzionare correttamente perché la fscanf legge sino al primo spazio e poi si blocca e poi passa alla parola successiva, inoltre se nel file ci fosse una parola con più di 100 caratteri saresti a rischio buffer overflow...

    Se il file testo.txt fosse fatto così:
    
    Padre Maronno butto la pasta??
    
    E se poi te ne penti?!
    
    Ti troveresti in output:
    
    Padre
    
    Maronno
    
    butto
    
    la
    
    pasta??
    
    E
    
    se
    
    poi
    
    te
    
    ne
    
    penti?!
    
    
    
    edit: sotto linux non userebbe mai la system("pause"), perché non funziona
  • Re: Lettura di un file e stampa a video

    Come l'ho scritto sopra si ma se io scrivo:
    
     while (fscanf(file,"%s",testo)>0) 
       {
         printf(" %s", testo);<------------Prima di %s c'è uno spazio
       }
    
    con lo spazio prima di %s mi scrive:
    Padre Maronno che faccio butto la pasta?? E se poi te ne penti? Torna la saggezza....

    per il problema del buffer overflow non saprei
  • Re: Lettura di un file e stampa a video

    Manca lo spazio tra una riga e l'altra però... Non viene letto dalla fscanf.
    Non è bello che un programma per visualizzare un file da terminale mi modifichi l'indentazione eliminando gli spazi, no?
  • Re: Lettura di un file e stampa a video

    Uso code blocks e problema con il system non me ne da. prima usavo dev-c++ ma molti mi hanno consigliato di cambiare e da pochi giorni uso codeblocks e non mi trovo molto bene e non ho capito i vantaggi di quest'ultimo, forse perchè lo uso da poco
  • Re: Lettura di un file e stampa a video

    Si ma con c::b non serve la system("pause")!!!!!!!!mi hai tratto in inganno dunque!
    Cosa non ti piace o trovi difficoltoso con c::b?

    Prova ad usare la fgets
    
    char testo[1024];
    while ( fgets(testo,1024,file) ) 
        printf("%s", testo);
    
  • Re: Lettura di un file e stampa a video

    Ahahahahah :DDDDDDD non sapevo che la system pause non servisse su codeblocks perchè ho sempre scritto i programmi in dev-c++.
    Comunque codeblocks non mi trovo tanto bene con i colori perchè ero abituato a quelli di dev-c++ e poi non riesco ad allargare la finestra dove devo scrivere il programma sullo schermo ci stanno 15 righe!! con dev una trentina anche di più ma credo sia solo questione di abitudine poi per il fatto delle righe vedrò di cambiare qualcosa nelle impostazioni.
    comunque grazie per i consigli!
  • Re: Lettura di un file e stampa a video

    Comunque codeblocks non mi trovo tanto bene con i colori perchè ero abituato a quelli di dev-c++ e poi non riesco ad allargare la finestra dove devo scrivere il programma sullo schermo ci stanno 15 righe!! con dev una trentina anche di più ma credo sia solo questione di abitudine poi per il fatto delle righe vedrò di cambiare qualcosa nelle impostazioni.
    comunque grazie per i consigli!
    SeppiaNew Entry Messaggi: 8Iscritto il: 03 ott 2013, 14:56
    (hai la 12.11 vero?)
    I colori li puoi modificare tutti : setting->editor->syntax highlighting
    A me circa 20 ma se trascini la barra di ricerca nella prima barra aumenti due righe,se vai poco sotto allo scrool orrizzontale riesci a ingrandire l'area cosi ti porti circa a 25/27 righe,puoi anche chiuderla la finestra di log&other poi per ripristinarla basta fare view->log oppure F2.
    Se invece vuoi esagerare view->perspectives->codeblocks minimal.
Devi accedere o registrarti per scrivere nel forum
10 risposte