现在有编号为:1,2,3,……,n的txt文件,每个文件的内容均为以下形式:
Time level level n
001 0.0 1039.4 36.0 4
002 2.0 1097.7 56.1 4
003 4.0 1098.9 24.8 4
004 6.0 1107.7 -2.6 4
005 8.0 1098.4 30.6 4
006 10.0 1093.1 -56.7 4
007 12.0 1107.9 -83.6 4
008 14.0 1090.3 -109.9 4
009 16.0 1108.1 -132.0 4
010 18.0 1099.4 -156.4 4
011 0.0 1039.4 36.0 5
012 2.0 1129.2 61.0 5
013 0.0 1039.4 36.0 6
014 2.0 861.6 23.0 6
015 4.0 783.4 -15.3 6
怎么读取这n个文件,然后将他们存储到一个名为“abc”的txt中?
我只知道单独读取的代码,也可以将我这个读取单独txt文件的代码改改后用,要是有更好的方法还请帮我指出来怎么操作。谢谢。
#include <iostream>
using namespace std;
struct BaseData
{
int row,con;
float tim;
float *line;
};
int main()
{
int i,c=2,m=50;
BaseData *base=new BaseData[m];
for(i=0;i<m;i++)
{
base[i].line=new float[c];
}
i=0;
FILE *fp;
char s[18];
if((fp = fopen("TestData.txt","rt")) == NULL)
{
printf("不能打开文件\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%s%f%f%f%d",s,
&base[i].tim,&base[i].line[0],&base[i].line[1],&base[i].con);
printf("%3d: %5.1f,%8.1f,%8.1f,%4d\n",i+1,
base[i].tim,base[i].line[0],base[i].line[1],base[i].con);
base[i].row=++i;
}
fclose(fp);
}
您好,我用您的代码试了一下,总是显示”没有找到此数据文件!“,请问是怎么回事?
追答因为没有文件存在,你一定要先用savefile保存一个数据文件才能用loadfile
追问可是我在根目录下放置了.txt文件了啊~
追答是我的错,我把你的表是文本给乎略了.把类里的数据类型全换成字符串型,问题就没了,那我后面想要用到double型的数据怎么办?
追答用转换呐,_atoi(); 之类的, 当然也可以定义一个结构体专门接收第一行字符.然后再用你的double类去接收其它的,
办法太多了,你的基础太弱了呀,还可以用字符串流转换.或者干脆自己写个转换函数.