循环读取多个文件,读取每个文件有用的字符,一次存入新的文件。代码找不出错误地方 求帮助
现在有 7 个文本文件 循环读取多个文件,读取每个文件有用的字符,一次存入新的文件但是 存入新的文本文件时候最后一个文件可以存入,前面六个文件无法存入新的文件
其中一个文件的内容如下:
0001
0002
0011
0012
0101
0102
0111
1001
1002
1011
1012
1101
1102
1111
1112
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#define m 7
void main()
{
FILE *fp,*fp1;
int i,j=0,Individual=0,SNP=0,x;
int a[20][10]={0};
char b[300][100]={0};
char mid,fname[20],finame[20];
int c[100]={0};
int d[20][10]={0};
int f[200][100]={0};
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=0;i<m;i++)
for(j=0;j<2;j++)
printf("%d ",a[i][j]);
printf("\n");
if((fp=fopen("fenkuaituidaoqizhi.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",&d[i][j]);
fclose(fp);
}
for(i=0;i<m;i++)
for(j=0;j<2;j++)
printf("%d ",d[i][j]);
printf("\n");
for(i=1;i<=m;i++)/*确定每个文本文件有多少行*/
{
Individual=0;
sprintf(fname, "hap%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");
for(i=1;i<=m;i++)
{
//char b[300][100]={0};
sprintf(fname, "hap%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]+2;j++)
fscanf(fp,"%c",&b[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",b[x][j]);
// printf("\n");
}
sprintf(finame, "ha%d.txt", i);/*把有用的字符写入新的文本文件*/
if ((fp1= fopen(finame,"w"))==NULL)
{
printf("the file can not open..");
}
for(x=0;x<c[i-1];x++)
{
for(j=0;j<a[i-1][1]-a[i][0]+1;j++)
fprintf(fp1,"%c",b[x][j]);
fputc('\n', fp1);
}
fclose(fp1);
}
}
/*if ((fp = fopen("hap2.txt","r"))==NULL)
{
printf("cannot open this file\n");
exit(0);
}
else
{
for(i=0;i<8;i++)
for(j=0;j<4;j++)
fscanf(fp,"%c",&b[i][j]);
fclose(fp);
}
for(i=0;i<8;i++){
for(j=0;j<3;j++)
printf("%c",b[i][j]);
printf("\n");}*/
}