Ответ 1
stdout
- это FILE*
, поэтому вы можете просто использовать:
FILE* fp = stdout;
Я пишу программу, и я хочу, чтобы пользователь мог указать, записывается ли вывод в файл или в стандартный вывод. До этого момента моя программа использовала команды printf, поэтому я надеялся просто изменить команды на команды fprintf, но мой компилятор кричит на меня, потому что, очевидно, это не те же классы объектов.
Например:
FILE *fp;
bool print_to_file;
.
.
.
if(print_to_file){
fp = fopen("something.txt", "w");
}
else{
fp = &stdout;
}
fprintf(fp,"%s\t%s\t%s\n",string1 . c_str(), string2 . c_str(), string3 . c_str());
Я бы предпочел придерживаться fprintf и найти указатель FILE для stdout, знает ли кто-нибудь, возможно ли это? Если ответ отрицательный, могу ли я открыть мои файлы как fstream, а затем использовать fprintf?
stdout
- это FILE*
, поэтому вы можете просто использовать:
FILE* fp = stdout;
Просто опустите амперсанд: fp = stdout;
.