Ciao a tutti, devo realizzare un programma che conti il numero di caratteri, parole e linee in un file di testo.
Facile, no?
L'ho testato su questo file:codice:#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { FILE* fp = NULL; int characters = 0; int words = 0; int lines = 0; char buf = 0; fp = fopen(argv[1], "rb"); while (!feof(fp)) { fscanf(fp, "%c", &buf); characters++; if (buf == ' ') words++; if (buf == '\n') { words++; lines++; } } printf("%d %d %d\n", characters, words, lines); return 0; }
E i risultati che mi stampa sono tutti incrementati di 1! Nel file ci sono 103 caratteri (spazi e punteggiatura inclusi), 19 parole, 3 linee.codice:Nel mezzo del cammin di nostra vita Mi ritrovai per una selva oscura, che la diritta via era smarrita.
Il programma stampa 104, 20, 4.
Ho anche provato a seguire manualmente l'esecuzione con il debugger, carattere per carattere. Arrivato a 103 caratteri, il ciclo si ferma, esce, parte la printf... che stampa 104. -.-
Perchè!?![]()

Rispondi quotando