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?