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

    [C] Esercizio: Leggere testo e scrivere su file

    Salve,
    sto cercando di risolvere questo esercizio

    codice:
    Implementare un programma in grado di:
    1. Leggere da tastiera un testo e scriverlo su file
    2. Visualizzare il contenuto del file carattere per carattere
    3. Contare il numero di linee del file che iniziano con la lettera ‘a’
    Ma non capisco come fare: potrei leggere il testo con la funzione gets() e metterlo in un array, però in questo modo il testo non potrebbe includere caratteri di newline (\n) per poi verificare nel passo 3 quali sono le linee.

    Ho cercato nel forum e un altro utente ha cercato di risolvere il problema, ma la soluzione propostagli non è il massimo perchè bisogna indicare ogni volta manualmente quando si va a capo inserendo un carattere "sentinella".
    Non esiste un modo per farlo in automatico?

  2. #2
    Ho risolto parzialmente il primo punto come volevo io, ovvero senza dover segnalare ogni volta manualmente una nuova linea, ma non so come far terminare il ciclo per esempio all'inserimento di un valore sentinella:

    codice:
    #include<stdio.h>
    
    void leggitesto(FILE *output);
    
    int main()
    {
        
        FILE *output;
        
        printf("Inserisci un testo e inserisci -1 quando hai finito:\n");
        if((output=fopen("testo.txt","w"))==NULL)
           printf("Impossibile leggere il file!");
           else
        leggitesto(output);
        fclose(output);
     
     system("pause");
     return 0;   
    }
    
    void leggitesto(FILE *output){
         while(1){     
         fputc(getchar(),output);
         }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Potresti fare una cosa del genere:

    codice:
        char line[LENGTH];
        FILE *file_out;
    
        ...
    
        while (fgets(line, LENGTH, stdin) != NULL) {
            fputs(line, file_out);
        }
    con questo ciclo leggi il testo riga per riga e lo scrivi nel file. Per terminare la scrittura ti basta che la fgets() rilevi l'EOF che puoi ottenere con ctrl+z su Windows e ctrl+d su Linux.
    every day above ground is a good one

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.