/* 改行して並べられたn(0以上の有限値)個の単語群 */

/* の中から、照合文字列を含む単語を検索し表示する */

 

#include<stdio.h>

#define N 20     /* 照合文字列の最大文字数 */

#define M 20     /* 1個の単語の最大文字数 */

main(){

        FILE *fp1,*fp2;

        int i,j,k,l,m,n;

        char ca,cb;

        char a[N];   /* 照合文字列 */

        char b[M];   /* 単語文字列 */

        fp1=fopen("E:/Cpp/40201A.dat","r");

        fp2=fopen("E:/Cpp/40201B.dat","w");

        for(i=0;i<N;i++){

                a[i]=' ';

        }

/* 照合文字列の読み込み */

        printf("\n照合する文字列 = ?");

        i=0;

        while((ca=getchar())!='\n'){

                a[i]=ca;

                i++;

        }

        printf("\n");

        n=i;   /* 単語の文字数を記憶 */

        fprintf(fp2,"shougou suru mojiretsu : <");

        for(i=0;i<n;i++){

                fprintf(fp2,"%c",a[i]);

        }

        fprintf(fp2,">\n\n");

/* 終わり */

        j=0;

        l=0;

/* 単語を1つずつ読み込み照合を繰り返す */

        i=0;

        fscanf(fp1,"%c",&cb);    /* 単語の最初の1文字を読む */

        while(cb!='!'){

                for(i=0;i<M;i++){

                        b[i]=' ';

                }

                i=0;

          /* 単語の2文字目以降を読み込む */

                while(cb!='\n'){

                        b[i]=cb;

                        i++;

                        fscanf(fp1,"%c",&cb);

                }

          /* 終わり */

                m=i;    /* 単語の文字数を記憶 */

          /* 照合して一致したら出力 */

                if(n<=m){

                        for(k=0;k<=m-n;k++){

                                for(i=0;i<n;i++){

                                        if(a[i]!=b[k+i])break;

                                }

                                if(i==n)break;

                        }

                        if(i==n){

                                for(k=0;k<m;k++){

                                        printf("%c",b[k]);

                                        fprintf(fp2,"%c",b[k]);

                                }

                                j++;

                                printf("\n");

                                fprintf(fp2,"\n");

                        }

                }

          /* 終わり */

                l++;

                fscanf(fp1,"%c",&cb);   /* 次の単語の最初の1文字を読む */

        }

/* 終わり */

        printf("\nitti sita data no kazu =%3d ( in %3d )\n",j,l);

        fprintf(fp2,"\nitti sita data no kazu =%3d ( in %3d )\n",j,l);

        fclose(fp1);

        fclose(fp2);

        return(1);

}