0

我想读取一个文件并将其标题保存在一个变量中,以便在我重写(覆盖)该文件时,我可以粘贴标题并继续打印修改后的文件的其余部分。就我而言,标题没有改变,所以我可以打印出来。这是我在课堂上的代码:

.
.
.
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 行)而不是像我现在所做的那样只打印一行的最佳方法是什么。

4

2 回答 2

2

因此,需要解决的问题是您正在读取多个文件,并且希望为每个文件保留一组数据。

有很多方法可以解决这个问题。其中之一是将 与 连接filename起来header。正如评论中所建议的那样,使用std::map<std::string, std::string>将是一种方法。

static std::map<std::string, std::string> headermap;



static int read(const char* filename){
static char headerline;
fget(var,...;
    for (int i=0; i<1024; ++i){
        headerline[i] = var[i];
    }   
    headermap[std::string(filename)] = std::string(headerline);

...

int write(filename){
  const char *headerline = headermap[std::string(filename)].c_str();
 fprintf(filename, headerline);   
// Note the printf is based on the above post - it's wrong, 
// but I'm not sure what your actual code does. 
于 2013-05-14T12:50:19.413 回答
0

您应该为不同的文件使用不同的标头变量。

于 2013-05-14T12:25:25.160 回答