[C] contalettere
Devo implementare la definizione di questa funzione:
la funzione accetta come parametro un nome del file da aprire in modalità tradotta. La funzione deve contare il numero di lettere presenti nel file e ritornarlo. con lettere si intendono i caratteri delle lettere dell'alfabeto inglese non accentate, sia minuscole che maiuscole.
il mio main.c:
il mio file.c è
il mio file.h è:
non capisco perchè il mio programma non funziona bene, cioè quando legge ciò che c'è all'interno del file, mi legge dei caratteri in meno, ma non capisco perchè...
extern unsigned int contalettere(const char* nomefile);
la funzione accetta come parametro un nome del file da aprire in modalità tradotta. La funzione deve contare il numero di lettere presenti nel file e ritornarlo. con lettere si intendono i caratteri delle lettere dell'alfabeto inglese non accentate, sia minuscole che maiuscole.
il mio main.c:
#include "conta.h" int main(){ char str1[] = "contolet.txt"; int ris = contalettere("contolet.txt"); return 0; }
il mio file.c è
#include "conta.h" unsigned int contalettere(const char* nomefile){ FILE *f = fopen(nomefile, "rt"); char c = 0; int i = 0; while ((c = getc(f)) != EOF){ if ((c>65 && c<90) || (c>97 && c<122)){ i++; } } fclose(f); return i; }
il mio file.h è:
#if !defined CONTA_H #define CONTA_H #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> extern unsigned int contalettere(const char* nomefile); #endif
non capisco perchè il mio programma non funziona bene, cioè quando legge ciò che c'è all'interno del file, mi legge dei caratteri in meno, ma non capisco perchè...
Risposte
Che caratteri non ti legge?
Ho provato il programma e ho riscontrato che c'è un errore nella condizione dell'if.
alla condizione
Poi mancherebbe la stampa della variabile 'ris' nel main ma questo non faceva parte della consegna.
alla condizione
if ((c>65 && c<90) || (c>97 && c<122)){vanno aggiunti gli uguali perchè altrimenti le lettere 'a' e 'z' e 'A' e 'Z' non vengono conteggiate. Non se è questo il tuo problema.
Poi mancherebbe la stampa della variabile 'ris' nel main ma questo non faceva parte della consegna.