文件的处理问题(给出思路即可)

来源:百度知道 编辑:UC知道 时间:2024/06/20 13:46:39
有文件的形式如下:
d:\a-1
aa 1
bb 2
d:\a-3
aa 2
bb 3
d:\b-1
aa 2
bb 3
d:\b-2
aa 2
bb 3


要解决的问题是:将字符‘-'前相同的路径名称文件内容相加,即完成d:\a-1与d:\a-3下的aa bbf分别相加
合成的形式为:
d:\a
aa 3(1+2)
bb 5 (2+3)
呵呵 很感谢大家!(0分也来回答),我想了下方法 似乎可行 还没验证
ifstream in(results.txt,ios::binary);
assert(in);
int i=0;

struct AA[100];//文件名称 aa bb等等
while(in.getline(buf,LEN))
{
pt=buf;
ps=-----;//存放的是路径的一部分
结构体赋值AA[i]
if(结构体i 与结构体i-1的名称部分相同))
{
数值相加
将相加的数值重新附给结构体i
}
if(结构体i 与结构体i-1的名称部分不相同))
{
将结构体i-1的内容写到文件中;
i=-1;
}
i++;

}

链表实现,节点数据结构如下:
typedef struct{
char id[20]; //存路径名,如"d:\a"
int aa;
int bb;
DS * pNext;
}DS;

遇到一个新的路径名时先扫描链表,如果之前有匹配的就直接把aa和bb值加到该节点,如果没找到匹配的就新建一个节点,加到表尾。

不过这样效率貌似很低。