School-Coding-Cpp/sfusi/es12_contalinee_foschini_fi...

58 lines
1.1 KiB
C++

/*
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";
}
}