/* 改行して並べられた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);
}