[C] contalettere

Messaggioda jarrod » 06/02/2018, 09:32

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è...
jarrod
Junior Member
Junior Member
 
Messaggio: 127 di 358
Iscritto il: 26/02/2017, 13:23

Re: [C] contalettere

Messaggioda vict85 » 07/02/2018, 21:22

Che caratteri non ti legge?
vict85
Moderatore
Moderatore
 
Messaggio: 9253 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Re: [C] contalettere

Messaggioda iggy » 08/02/2018, 18:45

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.
iggy
New Member
New Member
 
Messaggio: 1 di 86
Iscritto il: 08/02/2018, 18:40


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite