/** title: Processamento de Strings em C: pattern matching (aula TP1) ficheiro: ex10a.c autor: (TP1) versao de: 2001.04.03 .definicao de Tipos .uso de arrays de caracteres para implementar strings .uso de expressoes regulares para ler 1 linha com scanf() .uso da funcao strlen() **/ #include #define true 1 #define false 0 typedef int bool; typedef char str[50]; int match(str s1, str s2 ) {int i=0, j, fim, res=0; bool enc=false; fim = strlen(s1) - strlen(s2); while (i <= fim) { j=0; while((s2[j] == s1[i+j]) && (s2[j] != '\0')){ j++; } if(s2[j] == '\0') {printf("Ocorreu uma vez na posicao %d\n",i); res++; } i++; } return(res); } /*----- programa principal -----*/ int main( ) {int p; str linha, palavra; while (scanf("%[^\n]",linha) != 1) { scanf("\n"); } while (scanf("%[^\n]",palavra) != 1) { scanf("\n"); } if((p=match(linha, palavra)) >0 ) printf("Ocorreu %d vezes\n", p); else printf("Nao ocorreu\n"); return(0); }