Code Bye

怎么样提取多个txt中的数据

关于txt数据提取请教各位大大。
现在本人有几百个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

引用:

谢谢老师的指导!对于整型数据的输入,也就是本人的例子可以完美解答。
但是由于本人是从其他软件导出txt的结果,实际数据与本人的例子还是有些不同,本人导出的实际结果如下

可以看出每行txt数据前有空格,而且空格的个数并不固定,另外本人的数据是浮点型的。在这种情况下本人经过简单修改输出的结果为

可以看出本人导入的数据小数点后被略去了。想再向老师询问问题产生的原因与解决方法。本人的程序如下,麻烦老师了。

#include <stdio.h>
float d[8];
FILE *f;
char fn[32];
int i, j, r;
int main() {
	for (r = 1; r <= 4; r++) {//第r行
		for (j = 1; j <= 8; j++) {//第j个文件
			sprintf(fn, "D://stress%d.txt", j);
			f = fopen(fn, "r");
			if (f) {
				for (i = 0; i<r - 1; i++) fscanf(f, "%*f");//跳过前r-1个数
				fscanf(f, "%f", &d[j - 1]);//读取第r个数到d[j-1]中
				fclose(f);
			}
		}
		for (i = 0; i<8; i++) printf("%f ", d[i]);//显示第r行的100个数
		printf("\n");//换行间隔
	}
	return 0;
}

这个应该是float的精度问题,你换成double应该就能过了,具体原因本人搜一下吧,长篇大论的。建议不要用fscanf/scanf来输入float。
另外,看一楼说法,本人觉得用二维数组把数据全读出来之后进行处理比较方便,你这样打开关闭文件,还要跳来跳去的很容易出错。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样提取多个txt中的数据