如果printf使用stdout,那么如何编写一个使用自己的输出流的打印函数?我希望使用类似OO结构的方式来处理这个流,但我可以自己做到。这种情况是否可能发生?我是想学习这方面的知识。
像这样的代码是否可行 - 我没有测试过这段代码:
我应该如何使printf(char*, ...)函数将内容打印到控制台上?我是否需要在同一个函数中读取文件?
像这样的代码是否可行 - 我没有测试过这段代码:
#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*, ...)函数将内容打印到控制台上?我是否需要在同一个函数中读取文件?