view read.c @ 1:80a0c0eb67e0 default tip

while
author nobuyasu
date Mon, 31 Jan 2011 12:07:24 +0900
parents 60596de1cb2c
children
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h> //exit()
#include <string.h> //strlen()

#define MAX_LEN 256

int grep(char* string, char* pattern);

int main(int argc, char **argv)
{
  FILE *fp;
  char string[MAX_LEN];
  char *filename;
  char *pattern;

  if(argc > 2) {
    pattern = argv[1];
    filename = argv[2];
  } else{
    pattern = "abc";
    filename = "./test.txt";
    printf("pattern = %s \nfilename = %s \n",pattern,filename);
  }
  if ((fp = fopen(filename, "r")) == NULL) {
    fprintf(stderr, "not found %s\n",filename);
    exit(2);
  }

  while( (fgets(string, MAX_LEN - 1, fp)) != NULL){
    string[strlen(string) - 1] = '\0';
    if(grep(pattern, string ))
      puts(string);
  }

  fclose(fp);

  return 0;
}


int grep(char* pattern, char* string)
{
  char *pattern_;
  char *str_;

  do{
  pattern_ = pattern;
  str_ = string;
  while(*pattern_++ == *str_++)
    if(*pattern_ == '\0')
      return 1;
  }while(*++string != '\0');
  if(*str_ == '\0')
    return 0;
}