对C来说相当新,并且有一个小问题,
我的功能充满了&f; fprintf'语句和一些与输出相关的计算。 当我从main()调用它并正确打印到文档时,我想再次调用它并且具有相同的文本但只输出到终端(如printf)。
我在函数参数中有一个标志,它会指定这个选项但除了每个fprintf的if语句之外没办法完成它:
if (flag == 1)
{
fprintf(pt, "Random text...
} else {
printf("The same random text...
}
这看起来非常低效。我的另一个想法是(对我的了解很少)在上下文函数中使用#define:
if (flag== 1)
{
#define fprintf(pt, printf(
}
这不仅看起来很便宜,而且没有用。
任何想法都会受到赞赏, 感谢
答案 0 :(得分:8)
这样的事情怎么样:
FILE *out=stdout;
fprintf(out,"Hello World\n");
由于这是一个函数,您可以将out
指针作为参数传递。打印到终端时,只需为其分配stdout
。
答案 1 :(得分:2)
你可以使用printf(
相当于fprintf(stdout,
的事实来做三元表达:
fprintf(flag == 1 ? pt : stdout, "Random text...");