Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    3

    [C] Leggere da file su schermo?

    Ciao a tutti ho iniziato da poco a studiare la gestione dei file in linguaggio C e mi trovo in difficoltà a visualizzare su schermo ciò che scrivo in un file di testo.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main (){
        FILE *fp; char frase[20]; int i=0;
        fp= fopen("prova1.txt", "r");
        if(fp== NULL){
            printf("Non ho avuto accesso al file");}
        else{
            while((fscanf(fp, "%s\n", frase[i])!= EOF)){
                printf("%s", frase[i]);
                i++;}
        }
        fclose(fp);
        system("pause");
    }
    avevo scritto anche un semplice "Ciaoo" nel file ma niente, Visual Studio continua a darmi errore!
    Cattura.jpg

    potreste aiutarmi?

  2. #2
    frase[i] è il carattere i-esimo della stringa frase, e lo stai passando ad fscanf e printf che lo interpretano come un puntatore... Quello che devi passarci è frase e basta (l'array decade a puntatore al primo carattere e scanf/printf ci leggono/scrivono dentro correttamente).

    In ogni caso, questi sono abbastanza rudimenti di C, da che libro stai studiando?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    3
    Grazie mille risolto! sto alternando slide della mia professoressa con "Linguaggio C" Bellini- Guidi comunque.
    io avevo interpretato la funzione con il compito di leggere dal descrittore "fp" la stringa lettera per lettera incrementando il contatore e mettendo a schermo alla fine del file la parola intera. Non è comunque sensato il ragionamento?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Quote Originariamente inviata da DvDream Visualizza il messaggio
    io avevo interpretato la funzione con il compito di leggere dal descrittore "fp" la stringa lettera per lettera incrementando il contatore e mettendo a schermo alla fine del file la parola intera. Non è comunque sensato il ragionamento?
    Si ha senso, però se vuoi leggere e copiare carattere per carattere non usare la fscanf che fa già tutto da sé, ma forse qualcosa del genere:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main (void)
    {
        FILE *fp;
        char frase[20];
        int i = 0;
    
        fp= fopen("prova1.txt", "r");
        if(fp== NULL) {
            printf("Non ho avuto accesso al file");
        }
        else {
            while ( (frase[i++] = getc(fp)) != EOF );
            printf("%s", frase);
        }
    
        fclose(fp);
        system("pause");
    }

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 © 2025 vBulletin Solutions, Inc. All rights reserved.