Simulation of Unix Commands 3 SIMULATION OF UNIX COMMANDS – grep command // 3. Grep command #include <stdio.h> #include <stdlib.h> int substr( char *line, char *pat) { int i,j,k; for( i=0; line[i] != ‘\0’; i++) for( j=i,k=0; line[j]==pat[k] && pat[k] != ‘\0’; j++,k++); if ( pat[k] == ‘\0’) return 1; return 0; } int main(int argc, char *argv[]) { FILE *fp; char line[128]; if ( argc == 2 ) fp = stdin; else if ( argc == 3 ) { fp = fopen(argv[2], “r”); if ( fp == NULL ) printf(“file %s cannot be opened \n”, argv[1]); } else { printf(“Usage: %s <pattern> <file> \n”, argv[0]); exit(1); } while( fgets(line, sizeof(line), fp) ) if ( substr(line, argv[1]) ) printf(“%s”,line); fclose (fp); return 0; }