关于txt数据提取请教各位大大。
现在本人有几百个txt文件,按顺序deta1,deta2…deta100命名,每个txt中有一列数据,现在本人想要提取顺序提取每个txt中对应行的数据。例如:本人提取全部txt中第一行的数据,保存到一个C语言的一维数组中,然后进行处理。再提取每个txt中第二行,第三行,以此类推。
例如说本人现在有100个如图txt,第一次要把100个1保存到c语言的一维数组,第二次把100个2保存到数组…
现在本人有几百个txt文件,按顺序deta1,deta2…deta100命名,每个txt中有一列数据,现在本人想要提取顺序提取每个txt中对应行的数据。例如:本人提取全部txt中第一行的数据,保存到一个C语言的一维数组中,然后进行处理。再提取每个txt中第二行,第三行,以此类推。
例如说本人现在有100个如图txt,第一次要把100个1保存到c语言的一维数组,第二次把100个2保存到数组…
解决方案
35
//有一百个txt文件,按顺序deta1,deta2...deta100命名,
//每个txt中有一列数据,现在本人想要提取顺序提取每个txt中对应行的数据。
//例如:本人提取全部txt中第一行的数据,保存到一个C语言的一维数组中,然后进行处理。
//再提取每个txt中第二行,第三行,以此类推。
#include <stdio.h>
int d[100];
FILE *f;
char fn[32];
int i,j,r;
int main() {
for (r=1;r<=4;r++) {//第r行
for (j=1;j<=100;j++) {//第j个文件
sprintf(fn,"deta%d.txt",j);
f=fopen(fn,"r");
if (f) {
for (i=0;i<r-1;i++) fscanf(f,"%*d");//跳过前r-1个数
fscanf(f,"%d",&d[j-1]);//读取第r个数到d[j-1]中
fclose(f);
}
}
for (i=0;i<100;i++) printf("%d ",d[i]);//显示第r行的100个数
printf("\n");//换行间隔
}
return 0;
}
5
这个应该是float的精度问题,你换成double应该就能过了,具体原因本人搜一下吧,长篇大论的。建议不要用fscanf/scanf来输入float。
另外,看一楼说法,本人觉得用二维数组把数据全读出来之后进行处理比较方便,你这样打开关闭文件,还要跳来跳去的很容易出错。