[C] contalettere

jarrod
Devo implementare la definizione di questa funzione:
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
vict85
Che caratteri non ti legge?

iggy1
Ho provato il programma e ho riscontrato che c'è un errore nella condizione dell'if.
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.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.