Pagina 1 di 1

[C] contalettere

MessaggioInviato: 06/02/2018, 09:32
da jarrod
Devo implementare la definizione di questa funzione:
Codice:
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:
Codice:
#include "conta.h"

int main(){

   char str1[] = "contolet.txt";

   int ris = contalettere("contolet.txt");


   return 0;


}


il mio file.c è
Codice:
#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 è:
Codice:
#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è...

Re: [C] contalettere

MessaggioInviato: 07/02/2018, 21:22
da vict85
Che caratteri non ti legge?

Re: [C] contalettere

MessaggioInviato: 08/02/2018, 18:45
da iggy
Ho provato il programma e ho riscontrato che c'è un errore nella condizione dell'if.
alla condizione
Codice:
 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.