/** title: Processamento de Strings em C: pattern matching (aula TP1) ficheiro: ex10.c autor: (TP1) versao de: 2001.03.27 .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; bool enc=false; fim = strlen(s1) - strlen(s2); while ((i <= fim) && !enc){ j=0; while((s2[j] == s1[i+j]) && (s2[j] != '\0')){ j++; } if(s2[j] == '\0') enc = true; else i++; } if (enc) res = i; else res = -1; 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)) != -1) printf("Ocorreu pela primeira vez na posicao %d\n", p); else printf("Nao ocorreu\n"); return(0); }