/* AUTORE: Manuel Vichi 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 #include #include using namespace std; int searchWord(const char * fileName, const char * word) { FILE* file = fopen(fileName,"r"); unsigned occorrenze = 0; if (file != NULL) { char buffer[256]; char wordModified[256]; for (size_t i = 0; i < strlen(word); i++) { if (!isupper(word[i])) { wordModified[i] = toupper(word[i]); } else { wordModified[i] = word[i]; } } while(fgets(buffer,sizeof(buffer),file)) { for (size_t i = 0; buffer[i] != '\0'; i++) { if (isalpha(buffer[i]) && !isupper(buffer[i])) { buffer[i] = toupper(buffer[i]); } } } fclose(file); return occorrenze; } else { perror("Errore durante l'apertura del file"); return -1; } return -1; } int main(void) { cout << "Occorrenze: " << searchWord("occorrenze.txt","parola") << endl; return 0; }