Problema con lettura parole da file

di il
7 risposte

Problema con lettura parole da file

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

7 Risposte

Devi accedere o registrarti per scrivere nel forum
7 risposte