演習7-7 K&R プログラミング言語C
2010年03月12日
演習7-7
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXLINE 1024 int my_getline(char*, int); /* find : 最初の引数にあるパターンとマッチする行を表示する */ int main(int argc, char *argv[]) { char line[MAXLINE]; char *prog = argv[0]; FILE *fp; int found = 0; if (argc < 2) { printf("Usage : %s PATTERN [FILE]\n", prog); exit(EXIT_FAILURE); } else if (argc == 2) { while (my_getline(line, MAXLINE) > 0) { if (strstr(line, argv[1]) != NULL) { printf("%s", line); found++; } } } else if (argc == 3) { if ((fp = fopen(argv[2], "r")) == NULL) { fprintf(stderr, "%s: can't open %s\n", prog, argv[2]); exit(EXIT_FAILURE); } while (fgets(line, MAXLINE, fp) != NULL) { if (strstr(line, argv[1]) != NULL) { printf("%s", line); found++; } } fclose(fp); } return found; } /* my_getline : 1行読んで、長さを返す */ int my_getline(char *line, int max) { if (fgets(line, max, stdin) == NULL) { return 0; } else { return strlen(line); } }
実行結果
$ ./ex7-7 include ex7-7.c #include <stdio.h> #include <stdlib.h> #include <string.h>
プログラミング言語C 第2版 ANSI規格準拠
posted with amazlet at 09.11.27
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
共立出版
売り上げランキング: 9726