多个文件的链接问题
现有7个文本文件(ha1-7 里面存放的是字符型数据,每个文件的行数不一样,7个文件的字符长度也不一样,但是每个文件内部每一行的长度是一定的),对应另外7个文件(f1-7 此文件存放的是ha1-7文件中每行对应的频率) 还有一个文本文件(fenkuailianjieqizhi.txt) 存放的是ha1-7文件每一行字符的的长度。现在想把两两个文件中频率乘积大与q的字符两接到一起,最后连接成一个长字符以下是我编写的代码但是满是错误 麻烦大家指点
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include<time.h>
#include<string.h>
#define m 7
#define q 0.03
void main()
{
FILE *fp,*fp1;
int i,j=0,Individual=0,SNP=0,x,t,n;
int a[100][5]={0};
char str1[500][100]={0};
char str2[500][500]={0};
char mid,fname[20],finame[20];
int fr[500]={0},fr1[500]={0},b[500]={0},c[100]={0};
//int
//int
if((fp=fopen("fenkuailianjieqizhi.txt","r"))==NULL)/*确定每一个文本文件的起止字符*/
{
printf("cannot open this file\n");
exit(0);
}
else
{
for(i=0;i<m;i++)
for(j=0;j<2;j++)
fscanf(fp,"%d",&a[i][j]);
fclose(fp);
}
for(i=1;i<=m;i++)/*确定每个文本文件有多少行*/
{
Individual=0;
sprintf(fname, "ha%d.txt", i);
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can not open the file!\n");
}
while(!feof(fp))
{
mid=fgetc(fp);
if(mid=='\n')
Individual++;
}
c[i-1]=Individual;
}
for(i=1;i<=m;i++)
printf("%d\t",c[i-1]);
printf("\n");
if ((fp = fopen("ha1.txt","r"))==NULL)/*将每个文本文件的内容赋给数组*/
{
printf("cannot open this file\n");
exit(0);
}
else
{
for(i=0;i<c[0];i++)
for(j=0;j<a[0][1]-a[0][0]+2;j++)
fscanf(fp,"%c",&str1[i][j]);
fclose(fp);
}
for(i=0;i<c[0];i++)
{
for(j=0;j<a[0][1]-a[0][0]+1;j++)
printf("%c",str1[i][j]);
printf("\n");
}
if ((fp = fopen("f1.txt","r"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
else
{
for(i=0;i<c[0];i++)
fscanf(fp,"%d",&fr[i]);
fclose(fp);
}
for(i=0;i<c[0];i++)
printf("%d",fr[i]);
t=c[0];
for(i=2;i<=m;i++)
{
sprintf(fname, "ha%d.txt", i);
if ((fp = fopen(fname,"r"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
else
{
for(x=0;x<c[i-1];x++)
for(j=0;j<a[i-1][1]-a[i-1][0]+1;j++)
fscanf(fp,"%c",&str2[x][j]);
fclose(fp);
for(x=0;x<c[i-1];x++)
{
for(j=0;j<a[i-1][1]-a[i-1][0]+1;j++)
printf("%c",str2[x][j]);
printf("\n");
}
sprintf(fname, "f%d.txt", i);
if ((fp = fopen(fname,"r"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
else
{
for(x=0;x<c[i-1];x++)
fscanf(fp,"%d",&fr1[x]);
fclose(fp);
}
for(x=0;x<t;x++)
{
for(j=0;j<c[i-1];j++)
{
if(fr[x]*fr1[j]>q)/* 这地方不会编了 */
{
for(n=0;n<a[i-1][1]-a[i-1][0]+1;n++){
while (str1[x][n] !='\n')
while (str2[j][n] !='\n')
str1[x][n]=str2[j][n]; }
//str1[x][j] ='\0';}
}
}
}
}
}
}