【发布时间】:2013-05-14 12:23:02
【问题描述】:
我想读取一个文件并将其标题保存在一个变量中,这样当我重写(覆盖)该文件时,我可以粘贴标题并继续打印修改后的文件的其余部分。就我而言,标题没有改变,所以我可以打印出来。这是我在课堂上的代码:
.
.
.
static char headerline[1024];
static int read(const char* filename){
fget(var,...;
for (int i=0; i<1024; ++i){
headerline[i] = var[i];
}
.
.
.
}
int write(filename){
fprintf(filename, headerline);
//printing rest of file
.
.
.
}
代码在读取文件时成功打印了它保存的行。但是,我的问题是它保存了上次读取的文件的标题。因此,如果我打开了两个文件并且我想保存第一个文件,那么第二个文件的标题将写入第一个文件。我怎样才能避免这种情况?如果静态地图是一种解决方案,那究竟是什么?
其次,打印整个标题(5-8 行)而不是像我现在那样只打印一行的最佳方法是什么。
【问题讨论】:
-
作为生活中的一般规则,如果有人建议“X”作为您问题的解决方案,而您不知道“X”是什么,您应该问那个人“X 是什么?” .
-
如果可以,我早就拥有了。考虑到他已经死了。
-
@detraveller:对您的损失深表歉意,但是当他们提出答案时,请尝试提出问题。在不理解对方所说的内容的情况下退出对话绝不是一件好事。
-
对我来说,这些词只是意味着一个静态数据成员 (msdn.microsoft.com/en-us/library/b1b5y48f.aspx),它恰好是 map 类型,即 std::map (sgi.com/tech/stl/Map.html)。换句话说,它们有两种不同的含义,我可以将它们并列在一个表达式中,这样第一个含义就符合第二个含义:“静态地图”、“加拿大建筑师”、“红苹果”。
-
创建一个代表文件的类,然后将标题存储在它所属的实例中。