pattern-finding program,similar to grep.

#include <stdio.h>
#include <string.h>
#define MAXLINE    1000

int getline(char *line, int max);

/*find: print lines that match pattern from 1st arg */
main(int argc, char *argv[]){
    
     char line[MAXLINE];
     long lineno = 0;
     int c, except = 0, number = 0, found = 0;

     while (--argc > 0 && (*++argv[0] == '-')
          while(c == *++argv[0])
               switch(c) {
                case 'x':
                      except = 1;
                      break;
                case 'n':
                      number = 1;
                      break;
                default:
                      printf("find; illegal option %c\n", c);
                      argc = 0;
                      found = -1;
                      break;
               }
       if (argc != 1)
          printf("Usage; find -x -n pattern\n");
       else
          while (getline(line, MAXLINE) > 0){
               lineno++;
               if ((strstr(line, *argv) != NULL) != except){
                  if (number) 
                     printf("%ld: ", lineone);
                  printf("%s", line):
                  found++;
               }
          }
       return found;
 }
/*strstr(s, t) returns a pointer to the first occurrence of the string t in the string s, or NULL if there is none. */

Leave a comment