/*
Nome: Mario
Cognome: Montanari
Classe: 3AIN
Data: 10/04/2025

es12. (contalinee)
Scrivere una funzione che accetti due parametri (un nome di file e una stringa S) e
restituisca il conteggio delle righe contenenti S oppure -1 nel caso di errori nella
gestione del file. Dopo aver creato un file di testo, utilizzare la funzione per
contare le linee del file che contengono la parola BIANCO.
*/

#include <iostream>

#define SIZE_LINE 1000+1

using namespace std;

void contaLinee(const char * nomeFile, char * str);

int main(void) {
	char nomeFile[SIZE_LINE];
	char str[SIZE_LINE];
	
	cout << "Nome file: ";
	cin >> nomeFile;
	
	cout << "Parola da cercare: ";
	cin >> str;
	
	cout << endl;
	contaLinee(nomeFile, str);
	cout << endl;
	
	return 0;
}

void contaLinee(const char * nomeFile, char * str) {
	
	FILE * fp = fopen(nomeFile, "rt");
	
	if (fp != NULL) {
		char line[SIZE_LINE];
		int countLine = 0;
		
		while (fgets(line, sizeof(line), fp) != NULL) {
			if (strstr(line, str) != NULL) {
				countLine++;
			}
		}
		cout << countLine;
		
		fclose(fp);
	} else {
		cout << "-1";
	}
}