diff --git a/file/es18_cdoctor.cpp b/file/es18_cdoctor.cpp new file mode 100644 index 0000000..ed6e7e0 --- /dev/null +++ b/file/es18_cdoctor.cpp @@ -0,0 +1,42 @@ +/* +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; +}