Salve, ho realizzato questo programma:
Leggere il contenuto del file di testo, di nome “file.txt”.
Stampare a video un carattere ogni 3 di quelli letti.
Stampare a video il numero di caratteri ‘f’ presenti tra i caratteri stampati.
Il contenuto del file di testo è ifiuwerfhuwerfhow
Perchè la funzione ContaNumeroEffePresenti mi restituisce sempre zero?
#include <stdlib.h>
#include <stdio.h>
void LetturaFile(FILE **fp);
void StampaUnCarattereOgniTre(FILE *fp);
void StampaNumeroEffePresenti(FILE *fp);
int ContaNumeroEffePresenti(FILE *fp);
void StampaEsitoNegativo();
int main(void){
FILE *fp;
LetturaFile(&fp);
StampaUnCarattereOgniTre(fp);
StampaNumeroEffePresenti(fp);
system("pause");
return 0;
}
void LetturaFile(FILE **fp){
if((*fp = fopen("file.txt","r")) == NULL){
StampaEsitoNegativo();
}
return;
}
void StampaUnCarattereOgniTre(FILE *fp){
char car;
int i = 0;
printf("Stampa di un carattere ogni tre> ");
while (!feof(fp)){
fscanf(fp, "%c", &car); //oppure car = fgetc(fp);
if ((i % 3) == 0 || i == 0){
printf("%c",car);
}
i++;
}
printf("\n");
return;
}
void StampaNumeroEffePresenti(FILE *fp){
int num = ContaNumeroEffePresenti(fp);
printf("Numero delle f> %d\n",num);
return;
}
int ContaNumeroEffePresenti(FILE *fp){
char car;
int num = 0;
while (!feof(fp)){
fscanf(fp, "%c", &car);
if (car == 'f'){
num = num + 1;
}
}
return num;
}
void StampaEsitoNegativo(){
printf("Errore File\n");
return;
}