アプリ版:「スタンプのみでお礼する」機能のリリースについて

テキストファイルを読み込んで、該当する文字列を含む行を表示するというプログラムを作りたいのです。ファイルを読み込むことはできるのですが、該当する文字列を含む行を表示するやり方がわかりません。どなたか助けてもらえないでしょうか?
一応私が作ってみたプログラムはこんな感じになったんですけど・・・

#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;
}

A 回答 (2件)

fgets を使って行単位で読み込んで


strstrで行に対して文字列が含まれているか調べて
その行を表示するようにすればいいと思います。
    • good
    • 0

#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;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!