Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    9

    gestione file

    Ciao,

    mi trovo davanti ad un problema nella gestione dei file; non riesco a trattare le condizioni sull'EOF, mi spiego:

    in un esercizio dovevo contare le occorrenze di una parola; ho ciclato delle fscanf, ma non riesco a fargli riconoscere l'EOF. non esce dal ciclo. Ecco il mio codice, tenete presente che la prima parte riguarda invece il conto dei caratteri:

    codice:
    #include<stdio.h>
    #include<string.h>
    #define FNAME "frank.txt"
    
    int main () {
        FILE * punt;
        punt = fopen(FNAME, "r");
        
        // calcolare la lettera con + occorrenze
        int i, k, max, j;
        char Az[500];
        for (i=0; i<500; i++) {
            Az[i]= 0;
            }
        char c;
        k= 0;
        
        while (c != EOF ) {
              c= fgetc(punt);
              Az[k]= (Az[k] + 1);
              k++;
              }
        i= 33; //evito caratteri strani e spazio
        while (i < 500) {
              if (max < Az[i]) {
                      max= i;
                      }
                  
        printf("\nCi sono %d lettere e quella che compare piu' volte è la %c", k, (char)Az[max]);
        
        // torno all'inizio del file
        fseek(punt, 0, SEEK_SET);
        // cerco la tringa the
        char the[]= "the";
        char string[30];
        j= 0;
        
        while ( string != EOF ) {
              fscanf(punt, "%s", string);
              j= j+ (strcmp(the, string));
              }
        printf("\nLa parola the compare %d volte nel file", j);
        fclose(punt);
    }
    la condizione nell'ultimo while non può essere verificata in quanto è un confronto tra un puntatore ed un intero... ma come faccia allora ad uscire dal ciclo?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma non ti avevo dato un suggerimento su una discussione simile in precedenza?

    In particolare ti avevo suggerito

    while ((c = fgetc(punt))!= EOF)

    e avevi scritto che andava bene ...

    Adesso scrivi

    while (c != EOF ) {
    c= fgetc(punt);

    ??
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    9
    sì, ma questo esercizio è differente, chiede di contare le parole, non le lettere, quindi ho bisogno di una funzione che sia ingrado di leggere stringhe e fermarsi all'EOF

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma scusa nel sorgente c'è scritto

    // calcolare la lettera con + occorrenze

    ???
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    9
    perdomani quel codice è pieno di errori, lo riscrivo

    Scusami.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    9
    ecco, ho trovato:
    http://www.cplusplus.com/reference/c...y/cstdio/feof/

    grazie a questa funzione ho un modo valido per tutti i cicli per uscire appena il puntatore al contenuto del file raggiunge l'EOF.

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.