Scrivere un programma in linguaggio C che legga una sequenza di caratteri arbitrariamente lunga dal file di testo input1.txt e scriva, nel file di testo output1.txt, il carattere S se la stringa BIMBI è presente nella sequenza almeno 8 volte e N in caso contrario.
Ad esempio, se il contenuto del file input1.txt è il seguente
123BIMBI9BIMBIMBI
il file output1.txt prodotto dal programma conterrà
N
perché la stringa cercata è presente solo 3 volte.
Si noti che esiste una soluzione al problema proposto che è in grado di identificare le occorrenze della stringa cercata confrontando ogni carattere della sequenza con un singolo carattere della stringa cercata.
In più, si noti che la sequenza di input può essere arbitrariamente lunga e quindi la sua lunghezza può essere limitata unicamente dalle limitazioni dell'elaboratore a disposizione, quali, ad esempio, la quantità di memoria centrale disponibile e la lunghezza in byte del tipo dato long.
Possibile soluzione:
#include <stdio.h>
#include <string.h>
#define MAX 81
/* ricerca di parole in un file di testo */
main()
{FILE *f1;
char P[MAX], S[MAX];
int cont=0;
=fopen("F1.txt", "r");
if(f1==NULL){
printf("Errore apertura del file!\n");
return;
}
printf("\nParola da cercare ?");
scanf("%s",P);
fscanf(f1,"%s",S);
while (!feof(f1))
{
if(strcmp(S,P)==0){
printf("Ho trovato %s!\n",P);
cont++;
}
fscanf(f1,"%s",S);
}
printf("Trovata %s %d volte \n", P, cont);
fclose(f1);
}
secondo voi è esatto ???