, если printf использует stdout, но как мне написать функцию печати, используя свой собственный поток вывода? Я хочу обрабатывать этот поток с помощью объектно-ориентированной структуры, но я могу сделать это сам. Это возможно? это для обучения.
может сработать что-то подобное - я не тестировал этот код:
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
FILE* stdout2 = NULL;
int init() {
stdout2 = fopen("stdout.txt", "w");
if (!stdout2) return -1;
return 1;
}
void print(char* fmt, ...) {
va_list fmt_args;
va_start(fmt_args, fmt);
char buffer[300];
vsprintf(buffer, fmt, fmt_args);
fprintf(stdout2, buffer);
fflush(stdout2);
}
void close() {
fclose(stdout2);
}
int main(int argc, char** argv) {
init();
print("hi"); // to console?
close();
return 0;
}
как мне получить printf (char *, ...) print на консоли? мне нужно будет читать файл в той же функции?