照合に関するプログラムについて
2つのファイルを用意して1つが以下のaaa.txtのような数値が記述されているファイルで、もう1つがbbb.txtのようなファイルでこの中の2列目には、aaa.txtに記されている数値が含まれています。
-------aaa.txt------- -------bbb.txt-------
1.4 XMS 2.5
2.5 XMS 2.7
2.7 XMS 1.1
2.1 XMS 1.0
XMS 2.1
XMS 1.4
aaa.txtとbbb.txtそれぞれのテキストないで数字のダブリはない。bbb.txtはaaa.txtの数字をすべて含む。
aaa.txtに記述されている数値を利用して、bbb.txtの2列目で同じ数値を示すものをその数値がある行ごと取り出し、行末にnameという文字を出力し、bbb.txtの数値がaaa.txtのどの数値とも異なればそのままその行を出力するようなプログラムを書きたいと考えました。そこで、下記のようなプログラムを書いて実行したところ、こちらの意図した出力(ccc.txt)が得られませんでした。なぜ、cccのような出力にならなかったのかがわからなくて非常に困っています。どなたかこのプログラムの誤り又はもっと良い書き方を教えていただけないでしょうか。回答よろしくおねがいします。
------------ccc.txt----------------
XMS 2.5 name
XMS 2.7 name
XMS 1.1
XMS 1.0
XMS 2.1 name
XMS 1.4 name
-----プログラム--------
#include<stdio.h>
#include<string.h>
int main(int argc ,char *argv[])
{
FILE *fp[argc],*gp;
char x[30];
int linemax,ret;
double distance;
int i=0;
char command[30] = "wc ";
char *re="> Nline.txt";
char file1[25],file2[25],file3[25],*ends;
strcat(command,argv[2]);
strcat(command,re);
system(command);
gp=fopen("Nline.txt","r");
fscanf(gp,"%d%s%s%s",&linemax,file1,file2,file3);
system("rm Nline.txt");
fp[0]=fopen(argv[1],"r");
linemax=linemax-1;
while(fscanf (fp[0],"%s %lf",x,&distance==9){
while(fscanf(gp,"%lf",&dis)==1){
if(dis==distance){
printf("%s %lf name \n",x,distance);
i=0;
}else if(dis!=distance && i==linemax){
printf("%s %lf \n",x,distance);
i=0;
}
i++;
}rewind(gp);
}
fclose(gp);
fclose(fp[0]);
return 0;
}