#include <stdio.h>
#include <stdlib.h>
#define LINHA_MAX 200
char *procura(const char s1[], const char s2[])
{
const char *p1, *p2;
for(; *s1 != '\0'; s1++)
{
for(p1 = s1, p2 = s2; *p1 != '\0' && *p1 == *p2; p1++, p2++)
;
if(*p2 == '\0')
return (char *)s1; /* s1 esta' contida em s2! */
if(*p1 == '\0')
return NULL; /* o que sobra de s1 e' mais curto que s2. */
}
return *s2 == '\0' ? (char *)s1 : NULL;
}
int main(int argc, char *argv[])
{
char linha[LINHA_MAX];
FILE *entrada;
if(argc != 3)
{
fprintf(stderr, "Tem de passar dois argumentos!\n");
return EXIT_FAILURE;
}
if((entrada = fopen(argv[2], "r")) == 0)
{
fprintf(stderr, "Erro abrindo o ficheiro \"%s\".\n", argv[2]);
return EXIT_FAILURE;
}
while(fgets(linha, LINHA_MAX, entrada) != NULL)
if(procura(linha, argv[1]) != 0)
fputs(linha, stdout);
fclose(entrada);
return EXIT_SUCCESS;
}