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
.
.
.
}

このコードは、ファイルの読み取り中に保存した行を正常に出力します。ただし、私の問題は、最後に読み取ったファイルのヘッダーを保存することです。したがって、2 つのファイルが開いていて、最初のファイルを保存したい場合、2 番目のファイルのヘッダーが最初のファイルに書き込まれます。どうすればそれを回避できますか? 静的マップが解決策である場合、それは正確には何ですか?

次に、現在行っているように 1 行だけではなく、ヘッダー全体 (5 ~ 8 行) を印刷する最善の方法は何でしょうか。

4

2 に答える 2

2

したがって、解決が必要な問題は、複数のファイルを読み込んでいて、各ファイルのデータ セットを保持したいということです。

これを解決する方法はたくさんあります。それらの 1 つは、 を に接続することfilenameですheader。コメントで示唆されているように、使用std::map<std::string, std::string>はそれを行う1つの方法です。

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 に答える