关于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。
另外,看一楼说法,本人觉得用二维数组把数据全读出来之后进行处理比较方便,你这样打开关闭文件,还要跳来跳去的很容易出错。