Запись в файл .PGM с использованием C

#c #pgm

#c #pgm

Вопрос:

По какой-то причине я ничего не могу записать в файл .PGM. Следующий код компилируется без ошибок, но в .Файл PGM, который он создает. Я довольно новичок в C и довольно плохо знаком с работой со строками в этом синтаксисе.

 #include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <sstream>

int main(){
// Initialize variables.
    const int ncols = 30;
    const int nrows = 20;
    const int maxval = 255;
    std::string filename;

// Prompt user for filename.
    std::cout << "What would you like to name the file of the PGM image? Please include .PGM at the end of your name." << std::endl;
// Uses getline() function to retrieve input from user into a string.
    std::getline(std::cin, filename);
// Creates output stream object to use with managing the file.      
    std::ofstream fileOut(filename.c_str(),std::ios_base::out
                          |std::ios_base::binary
                          |std::ios_base::trunc
               );
    fileOut.open(filename.c_str());
    fileOut << "P2" << " " << ncols << " " << nrows << " " << maxval << "n";

    fileOut.close();
}
  

Я знаю, что есть еще один вопрос SO, похожий на этот, но я использовал этот ответ, чтобы попасть сюда. Я даже не могу заставить его записать часть заголовка, и это даже не точка назначения. Кто-нибудь может помочь?

Комментарии:

1. К вашему сведению, вы открываете файл дважды. Один раз при создании fileOut и второй раз при вызове fileOut.open(...) .

2. Удаление во второй раз исправило это. Большое вам спасибо.