Encoders
Hub for Computer Whizzes Register to join us

Encoders > More... > C > Program

/* Program to print each line of its input that contains a particular
   pattern of strings. */

#include <stdio.h>

#define MAXLINE 1000

int getline(char line[], int max);
int strindex(char source[], char searchfor[]);

main()
{
	char line[MAXLINE];
	int found = 0;
        char pattern[] = "fool";

        while(getline(line,MAXLINE)>0)
                if(strindex(line,pattern) >= 0)
		{
                        printf("%s", line);
			found++;
		}
	return found;
}

int getline(char s[], int lim)
{
	int c, i;
        for(i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; i++)
		s[i]=c;
	if(c=='\n')
		s[i++]=c;
	s[i]='\0';
	return i;
}

int strindex(char s[], char t[])
{
	int i, j;
	for(i=0; s[i]!='\0'; i= i-j+1)
	{
                for(j=0 ; t[j]!='\0' && s[i]==t[j]; ++i, ++j)
			;
                if(j>0 && t[j]=='\0')
			return i-j;
	}
	return -1;
}