как мне создать выходной поток в c, например stdout?

, если 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 на консоли? мне нужно будет читать файл в той же функции?

5
задан evolon696 27 November 2011 в 20:49
поделиться