Ciao a tutti
Devo creare un programma in C che, dato un file txt contenente una serie di parole casuali (es gf lk n paa xi bdd sa), e dati due caratteri c1 e c2 (es, a e b), restituisca il numero di parole che hanno o il valore c1 o il valore c2 (nell'esempio deve restituire 3)
Sono arrivato a buon punto:
#include<stdio.h>
#include <stdbool.h>
#include <string.h>
#define L_STR 100
/*
IP descr Descrizione della stringa da leggere.
IK+OP strLetta Stringa letta.
*/
void readString(const char* descr, char* strLetta) {
printf("%s", descr);
scanf("%s", strLetta);
} /* readString */
/*
IP Nome del file da elaborare,.
OP contaPar: parole contenenti o c1 o c2;
OR Esito(!=-1: elaborazione riuscita e risultato; -1: apertura fallita di $nomeFI).
*/
int contaPar(const char*nomeFI, char c1, char c2){
int cont=0;
char ch[L_STR];
printf("Inserisci c1\n");
scanf(" %c",&c1);
printf("Inserisci c2\n");
scanf(" %c",&c2);
FILE *inF;
inF=fopen(nomeFI, "r");
if (inF == NULL)
return -1;
while(true){
if(feof(inF))
break;
fscanf(inF, "%s",&ch);
printf("%s\n",ch);
if(*ch==c1 || *ch==c2)
cont++;
}
printf("parole: %d\n",cont);
fclose(inF);
return cont;
}
int main(){
char nomeFI[L_STR],c1,c2;
readString("Nome file:",nomeFI);
int esito=contaPar(nomeFI,c1,c2);
if(esito!=-1)
printf("Il file e' stato aperto correttamente e le parole con c1 o c2 sono %d\n",esito);
else
printf("Apertura del file fallita");
return 0;
}
Il codice è quasi giusto: restituisce il numero di parole che hanno c1 o c2 però solo come carattere iniziale (es riconosce ak ma non ka).
Come devo fare a far leggere l'intera stringa e non solo il primo carattere? Grazie