• 締切済み

探索アルゴリズム

テキストファイルを読み込んで、該当する文字列を含む行を表示するというプログラムを作りたいのです。ファイルを読み込むことはできるのですが、該当する文字列を含む行を表示するやり方がわかりません。どなたか助けてもらえないでしょうか? 一応私が作ってみたプログラムはこんな感じになったんですけど・・・ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) {  FILE *fp;  char ch;  if( argc != 3)  {  printf(" 使用法 : <プログラム名> <ファイル名> <文字> \n");  return -1;  }  if((fp = fopen(argv[1],"r")) == NULL)  {  printf("ファイルを開くことができません\n");  return -1;  }  while(( ch = fgetc(fp)) != EOF)  if(ch == *argv[2])  {  printf("%cが見つかりました\n",ch);  break;  }  fclose(fp);  return 0; }

みんなの回答

  • mac_res
  • ベストアンサー率36% (568/1571)
回答No.2

#include <stdio.h> #include <string.h> #include <errno.h> char *prog; int main(int argc, char *argv[]) { FILE *fp; char buf[BUFSIZ]; prog = argv[0]; if (argc != 3) { printf(" 使用法 : %s <ファイル名> <文字> \n", prog); return (errno); } if ((fp = fopen(argv[1], "r")) == NULL) { printf("ファイル(%s)を開くことができません\n", argv[1]); return (errno); } while (fgets(buf, BUFSIZ, fp) != NULL) { if (strstr(buf, argv[2]) != NULL) { printf("[%s]が見つかりました:%s", argv[2], buf); } } fclose(fp); return 0; }

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

fgets を使って行単位で読み込んで strstrで行に対して文字列が含まれているか調べて その行を表示するようにすればいいと思います。