61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
/*
|
|
Nome: Mario
|
|
Cognome: Montanari
|
|
Classe: 3AIN
|
|
Data: 31/03/2025
|
|
|
|
es18. (occorrenze)
|
|
Scrivere una funzione che, ricevuti in ingresso un nome di file e una parola S,
|
|
restituisca il numero di occorrenze di S all'interno del file oppure -1 in caso
|
|
di errore nella gestione del file. La funzione opera sotto le seguenti condizioni:
|
|
una parola è una sequenza di caratteri priva di whitespace; un file è composto da
|
|
una sequenza di parole separate da whitespace; la ricerca delle occorrenze è di tipo
|
|
case insensitive.
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include <cstring>
|
|
|
|
#define SIZE_LINE 1000+1
|
|
|
|
using namespace std;
|
|
|
|
int contaOccorrenzeParola(const char * nomeFile, char * parola);
|
|
|
|
int main(void) {
|
|
char word[] = "the";
|
|
|
|
cout << contaOccorrenzeParola("romanzo.txt", word);
|
|
|
|
|
|
return 0;
|
|
}
|
|
|
|
int contaOccorrenzeParola(const char * nomeFile, char * parola) {
|
|
FILE * fp = fopen(nomeFile, "rt");
|
|
|
|
if (fp != NULL) {
|
|
char str[SIZE_LINE];
|
|
int countWord = 0;
|
|
|
|
for (int i = 0; parola[i] != '\0'; i++) {
|
|
parola[i] = tolower(parola[i]);
|
|
}
|
|
|
|
while (fgets(str, sizeof(str), fp) != NULL) {
|
|
for (int i = 0; str[i] != '\0'; i++) {
|
|
str[i] = tolower(str[i]);
|
|
}
|
|
|
|
if (strstr(str, parola) != NULL) {
|
|
countWord++;
|
|
}
|
|
}
|
|
|
|
fclose(fp);
|
|
|
|
return countWord;
|
|
} else {
|
|
return -1;
|
|
}
|
|
} |