下面使用代码的方式说明,较为简单,请自行阅读.
#include
#include
#include
#define MAX_BYTES 64
int read_int(FILE *file,char *buffer)
{
fgets(buffer,MAX_BYTES,file);
return atoi(buffer);
}
void main(int argc,char *argv[])
{
char * file1 = argv[1];
char * file2 = argv[2];
char buffer[MAX_BYTES];
FILE *fd1 = fopen(file1,"r");
if(fd1 == NULL)
{
printf("Can not open file %s.\n",file1);
return;
}
FILE *fd2 = fopen(file2,"r");
if(fd2 == NULL)
{
printf("Can not open file %s.\n",file2);
return;
}
for(int i = 1;!feof(fd1);i++)
{
int outer = read_int(fd1,buffer);
for(int j=1;!feof(fd2);j++)
{
int inner = read_int(fd2,buffer);
if(outer == inner)
{
printf("Value : %d,outer line : %d,inner line : %d\n",outer,i,j);
}
}
rewind(fd2);
}
fclose(fd2);
fclose(fd1);
}
运行输出:
helloworld@DESKTOP-BRAEUTR /d/work/source/c/join
$ time ./nested.exe a.csv b.csv
Value : 51,outer line : 1,inner line : 25646
Value : 51,outer line : 1,inner line : 35302
Value : 51,outer line : 1,inner line : 39994
Value : 51,outer line : 1,inner line : 69241
Value : 51,outer line : 1,inner line : 69614
Value : 51,outer line : 1,inner line : 72504
Value : 51,outer line : 1,inner line : 72851
Value : 51,outer line : 1,inner line : 78530
Value : 51,outer line : 1,inner line : 88119
......